我们正在使用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。