我正在使用 wxWidgets 绘制一个大流程图,即 625 x 26329 像素。该程序从 Qt 传输到 wxWidgets。它的布局很容易,主框架内部有一个自定义的滚动窗口。滚动窗口每次在更新的客户区域内绘制图表的一部分。
现在 Qt 和 wxWidgets 有很大的不同。当鼠标滚动垂直滚动时,Qt 刷新绘制图表非常流畅,而 wxWidgets 则缓慢闪烁。
谁能告诉我如何有效地制作这幅画?
你确定它很慢?我想知道,我遇到了不同的经历。
你提到闪烁。闪烁主要是由于过多的刷新调用造成的。为了防止这种情况,您必须使用双缓冲,这是关键。
双缓冲意味着将屏幕外的所有内容绘制到图像/位图中,并且在绘制完所有内容之后,图像/位图被完全绘制(这样做非常快,所以没有闪烁:)!)。
Qt 用于默认的双缓冲。这就是为什么它看起来每次都很顺利。然而,这种方法的缺点是它会消耗性能。wxWidgets 并不限制你。相反,它说,获得双缓冲是你的任务。
你也应该看看你是否没有剪裁你正在绘制的区域。在 Windows 下使用 wxWidgets 进行剪辑给了我更好的性能。
PS:是的,老问题,但我认为仍然需要知道事实如何。