我需要画大约 1000 条线。这些行每秒更改大约 25 次(因此,每秒 25000 行)。这样做时我可以使用什么来获得可接受的性能?我不喜欢使用 directX 调用,因为该软件还需要在服务器上运行,默认情况下没有 directX。
我尝试了两种不同的方法,但给了我一个融化的 CPU:
Setup1 - 标准 .NET 调用:
- 双缓冲面板
- 在内存位图上绘图(使用 Graphics.DrawLine 清除和重绘线条)
- 使用 Graphics.DrawImageUnscaled 将位图复制到面板
- profiler 说这两个图形调用是瓶颈
Setup2 - gdi 的 dllimport 调用:
- 双缓冲面板
- 使用来自 gdi 的 MoveToEx 和 LineTo 绘制内存位图
- 使用 BitBlt 将位图复制到面板
- profiler 说那些非托管调用是瓶颈
如果我使用 WPF 而不是 Winforms,性能会提高吗?或者是通过使用 directX 或第三方库来做到这一点的唯一方法?
干杯