2011-10-20 59 views
6

我有一个silverlight Canvas它拥有图像(多边形)的图像。我需要开发一个控件来放大和平移该工作区域内的画布(单元内的Border,截至目前为止),如下所示。做这个的最好方式是什么。有没有我可以使用的图书馆?缩放和平移图像画布

我需要能够将图纸添加到缩放/平移画布上。

http://i54.tinypic.com/1zbe7pf.png

+0

您希望缩放滑块实际放大画布本身而不是图像,以便画布填充整个工作区域? – Jack

+0

是的。因为图像上的标记应该到位。 – blitzkriegz

+0

画布是否填满整个工作区域取决于使用缩放滑块设置多少变焦。 – blitzkriegz

回答

1

你可以尝试创建一个用户控件,基本上是一个帆布内的图像,并公开两个变换属性来控制缩放和平移。 ScaleTransform可以处理缩放,而TranslateTransform可以处理平移。您可以从两者创建CompositeTransform并将其指定为画布的RenderTransform。

您可以将缩放滑块绑定到ScaleTransform,并处理鼠标事件以更改TranslateTransform。只要你获得了相对于画布本身的鼠标坐标(即mouseEventArgs.GetPosition(canvas))。

2

大量的代码示例在互联网上可用。检查出ZoomControlCodePlex

+2

+1,为什么要重新发明轮子。 –