缩放到Canvas而不修改特定子控件的大小

时间:2011-05-15 18:37:34

标签: wpf zooming

所以我意识到我在这里冒险使用Canvas,并且可能需要提出更多的手动解决方案。但是,在WPF中没有过多的经验,我希望可能有一些解决方案可以让我继续使用Canvas控件及其免费提供的功能。

问题围绕着Canvas,它用于放大和缩小图像以及属于Canvas的一些子控件。这些子控件应放置在图像上的不同位置,因此,Canvas可以很好地工作,因为它在我放大或缩小时处理所有布局/定位。

然而,一个缺点是Canvas在放大图像时缩放这些子控件,导致它们变得太大而无法在实践中使用。我正在寻找的是一个解决方案,它允许我放大到属于画布的图像,而不会缩小子控件的大小,最好是为我处理布局。

我已经尝试修改这些子控件的宽度和高度,因为缩放系数增加或减少,但是有一个小的滞后时间,它看起来有点“生涩”。

如果归结为它我将简单地完成所有的缩放/平移/布局,但我想我会首先要求确保我没有遗漏任何可以让我告诉画布的东西缩放某些控件的大小。提前谢谢。

2 个答案:

答案 0 :(得分:2)

这更多的是思考而不是答案,但是如果你设置了一个你不想要缩放的元素的变换,那么与画布本身相反。因此,例如,如果画布具有2.0的缩放变换,则将该元素设置为具有0.5的缩放变换。您可以通过使用值转换器将变换值绑定在一起来实现此目的。

您可能希望确保该元素的渲染变换原点为0.5,0.5,以便它从中心缩放。

答案 1 :(得分:2)

您可以将子项的RenderTransform绑定到Canvas'变换的反转,请参阅我对this similar question on rotation的回答。