改进WPF Canvas的性能



我正在使用WPF开发一个类似地图的应用程序。我有大约10,000个PathGeometry,形状添加到画布。我已经为缩放和平移控件添加了ScaleTransform和TranslateTransform。

我面临的问题是,当我缩放或平移时,有轻微的延迟。是否有一种方法来组织数据,以便我只处理可见的形状?

你在画布上放了什么东西?如果使用pathGeometry,您是否将它们封装在Path类中?如果是这样,Path的超类层次结构中有FrameworkElement,这会导致大量的性能损失。

看看我的问题。虽然是关于Shape类,但是性能下降的原因是一样的,FrameworkElement.

如果你这样做,解决方案是使用PathGeometry代替,并使用DrawingContext. drawgeometry()方法将其包含在DrawingVisual的DrawingContext中。

这里有一些链接应该会有所帮助。道路几何

DrawingContext.DrawGeometry ()

优化性能:2D图形和成像

自己绘制形状,使用线的组合,以及从几何类派生的类(ArcGeometry, PathGeometry等)提供的其他东西。

如果您想要在WPF中立即绘图的最终性能,那么请查看WriteableBitmapEx。这是一个优秀的开源库,我最近为它做了贡献。它在WriteableBitmap上提供了类似gdi的绘图功能,并且与Windows Phone、WPF和Silverlight兼容。它的API很简单,你可以得到比特、多边形、线条和简单的形状等等。然而,你不会得到数据模板和渐变刷。

相关内容

  • 没有找到相关文章

最新更新