wpf - 如何在 Canvas 上使用大量多边形提高性能和内存使用率?

标签 wpf performance

我正在做的项目需要渲染一个 ESRI 形状文件,它可以有大量的多边形/形状。当我将所有这些多边形、线、点等添加到我正在使用的 Canvas 时,它变得非常慢。

为了在 map 上绘制形状,我创建了一个 Path 对象,并将它的 Data 属性设置为 StreamGeometry。我最初使用的是 Polygon,但根据 MSDN,StreamGeometry 的重量要轻得多。

如何提高性能?将成品转换为位图或 VisualBrush 有帮助吗?有没有更有效的方法将所有这些形状渲染到 Canvas 上?

编辑:我忘了提到这需要能够在部分信任 XBAP 中工作。

最佳答案

无需求助于 GDI,您只需要在 WPF API 中向下移动一层并将您的几何图形组合成更少的视觉效果。 Pablo Fermicola 有一些关于 picking which layer 的有用信息根据您的性能需要使用。

我设法使用 DrawingVisual 获得了出色的性能和 DrawingContext类(class)。

关于wpf - 如何在 Canvas 上使用大量多边形提高性能和内存使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150151/

相关文章:

c# - WPF Expander IsExpanded 绑定(bind)

asp.net - 分析 ASP.NET Web 应用程序的 CPU 使用率 - 但不是数据库!

android - lockCanvas() 真的很慢

php - 在 MySQL 和 PHP 中进行计算

c# - 如何基于绑定(bind)列表构建包含其他控件的 WPF 控件

c# - 在应用程序设置中保存字典并在启动时加载它

c# - MVVM WPF 中的数据绑定(bind)

performance - 带有 JBoss 'minimal' 配置的 Seam 应用程序?

Python/Numpy : Build 2D array without adding duplicate rows (for triangular mesh)

.net - WPF标签中的自动换行符