如何以合适的速度绘制C#/ WinForms?

Vil*_*lx- 3 .net c# performance drawing

我正在尝试将图形可视化并允许人们使用它.我找到了优秀的Graph#库,可以创建初始布局,以便覆盖部件.现在我需要制作一个实际绘制它的控件并提供必要的交互性.

Graph#本身带有一个很好的可视化工具,但是我不喜欢它,因为它是用WPF编写的(我的应用程序是WinForms),并且因为我想添加一些更多的交互选项,无论如何都需要重新制作它.

我正在绘制的图形通常非常大,大约100个顶点和相同数量的边(图形将是树的99%的时间).这意味着生成的渲染可以达到2000px到2000px甚至更高.用户应该能够放大和缩小,滚动,突出显示和拖动顶点和边缘,并在将光标悬停在顶点上方时获得一些带有附加信息的弹出窗口.

我担心标准System.Drawing可能无法为此提供合适的速度.我希望拖动/缩放/滚动操作流畅,弹出窗口也应该打开一些动画.20fps之类的东西应该是必需品.

我知道我可以尝试通过预渲染大量元素并将它们保留在内存中作为位图来加快速度 - 但这可能占用大量RAM,而我仍然不确定它是否会提供必要的性能.

你的想法是什么?

Nei*_*l N 5

"过早优化是所有邪恶的根源"

GDI +可以满足您的需求.在您知道甚至需要它们之前,不要去买第三方图书馆.

我在1000x800像素位图上完成了一千个多边形,并使用GDI +以每秒100帧以上的速度重新绘制它

话虽这么说,如果你有很多绘图要做,而且你的分辨率很高......有些第三方绘图库可以超越GDI的管理范围.