【发布时间】:2009-06-04 19:35:58
【问题描述】:
我编写了一个显示财务数据的图表。当我使用PathGeometry 以及PathFigure 和LineSegments 绘制少于10.000 个点时,性能很好。但现在我需要同时显示多达 100.000 个点(无需滚动),而且 50.000 个点已经很慢了。我在想StreamGeometry,但我不确定,因为它与将信息存储为字节流的PathGeometry 基本相同。有没有人有想法让这个性能更高,或者也许有人已经做了类似的事情?
编辑:这些数据点一旦绘制就不会改变,所以如果有可能对其进行优化,请告诉我(线段现在被冻结)。
编辑:我尝试了 StreamGeometry。由于某种原因,创建图形需要更长的时间,但这不是问题。绘制完所有点后在图表上绘制仍然和以前的方法一样慢。我认为 WPF 需要处理的数据点太多了。
编辑:我进行了一些实验,我注意到通过将以前为 double 的坐标转换为 int 以防止 WPF 抗锯齿子像素线,性能有所提高。
编辑:感谢所有建议减少线段数量的回复。我已经将它们降低到最多两倍的阶梯线水平分辨率和最多简单线的水平分辨率,现在性能非常好。
【问题讨论】:
-
一次屏幕上有这么多点(即,我认为仅靠眼睛很难离散地识别所有点)您不能在绘制之前优化点(例如当几个点形成一条“直线”时,删除“中间”点并保留“端点”)?这将减少要绘制的点数,从而减少绘制时间。
-
谢谢迈克尔,我会试试的。
标签: c# .net wpf performance 2d