0

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

可以使用滚动条移动它,这是由该画布的 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,出现了这个错误。

4

0 回答 0