【问题标题】:Drawing Vector Graphics Faster更快地绘制矢量图形
【发布时间】:2009-11-21 00:09:40
【问题描述】:
在我的应用程序中,我想使用 Windows Create Graphics 方法绘制多边形,然后通过允许用户选择多边形的点并允许重新定位它们来编辑多边形。
我使用鼠标移动事件来获取点的新位置以获取被移动点的新坐标,并使用 Paint 事件重新绘制多边形。应用程序正在运行,但是当一个点被移动时,移动并不顺畅。
我不知道鼠标移动或绘画事件是否会影响性能。
任何人都可以就如何改进这一点提出建议吗?
【问题讨论】:
标签:
graphics
vector
drawing
performance
【解决方案1】:
确保您不会在每次鼠标移动时都重新绘制。正确的方法是处理所有输入事件,修改多边形数据并设置一个需要重绘的标志(在 Windows 上可能只调用 InvalidateRect() 而不调用 UpdateWindow())。
【解决方案2】:
您可能没有真正的性能问题 - 您可能只需要绘制到屏幕外 DC,然后将其复制到您的窗口,这将减少闪烁并使移动看起来更加流畅。
如果您使用 Win32 api 进行编码,请查看 this 以供参考。
【解决方案3】:
...当然,请确保您只使需要重新绘制的区域无效。由于您要跟踪多边形,因此仅使多边形区域(前后状态的矩形联合)无效。