在ScaleTransform

时间:2017-08-08 13:46:03

标签: c# wpf xaml canvas rendertransform

我们正在使用WPF Canvas及时显示酒店房间的地图。

可以使用滚动条移动它,这是通过该画布的TranslateTransform完成的。甚至可以缩放它,这是通过画布的ScaleTransform完成的。用户可以在该地图中选择一个块,通常通过以下方式完成:

Rectangle
Canvas.Children.Add
Canvas.SetLeft
Canvas.SetTop

但似乎在Canvas形成时会出现一个错误,因为它会停止渲染一个新的内容(例如,该块选择),该内容在转换后添加。我知道新内容确实已添加到画布中,因为当用户将比例设置回1(无比例)时,它会突然显示。该问题在尺度上可见< 1,可能是当画布获得更多要绘制的对象时。

我试图强制画布在转换的情况下通过ArrangeOverride或UpdateLayout重绘,但它没有帮助。

那么有谁知道发生了什么以及如何解决它?非常感谢帮助。

谢谢。

修改

我在GitHub上准备了一个MCVE: https://github.com/kanovsky/CanvasTest

当我有这个例子时,我确认我的猜想是当画布中有很多元素时会出现错误,因此ScaleTransform没有问题。

整个控件基于这篇文章: https://www.codeproject.com/Articles/31661/Much-Faster-Silverlight-Scrolling

在Silverlight中没有问题,最近被转移到出现此错误的WPF。

0 个答案:

没有答案