【发布时间】:2012-08-20 19:00:09
【问题描述】:
我需要画大约 1000 条线。这些行每秒更改大约 25 次(因此,每秒 25000 行)。这样做时我可以使用什么来获得可接受的性能?我不喜欢使用 directX 调用,因为这个软件还需要在服务器上运行,而服务器默认没有 directX。
我尝试了两种不同的方法,但给了我一个融化的 cpu:
Setup1 - 标准 .NET 调用:
- 双缓冲面板
- 在内存位图上绘图(使用 Graphics.DrawLine 清除和重绘线条)
- 使用 Graphics.DrawImageUnscaled 将位图复制到面板
- 分析器说这两个图形调用是瓶颈
Setup2 - gdi 的 dllimport 调用:
- 双缓冲面板
- 使用来自 gdi 的 MoveToEx 和 LineTo 绘制内存位图
- 使用 BitBlt 将位图复制到面板
- 分析器说那些非托管调用是瓶颈
如果我使用 WPF 而不是 Winforms,性能会提高吗?或者是唯一的方法,通过使用 directX 或第三方库?
干杯
【问题讨论】:
-
线条的尺寸是多少?
-
它们的长度可变,介于 1 到 500 像素之间。
-
行数是固定的吗?