在Windows-7上,我的应用程序收到来自windows的连续重绘事件。我正在使用wxWidgets。
这个问题并没有发生:
在(2010)的调试模式中
这个问题只发生在Widows7时,应用程序要重绘很多,而且要花费超过5秒的时间来绘制。如果我关掉一些需要重绘的东西,而且不需要花那么长的时间,那就没问题了。
我在paint事件处理程序中调用wxPaintDC dc(this);,所以这不是问题。
我也试过DwmFlush。我将其放入重绘事件处理程序和绘图代码中。
发布于 2011-08-29 14:35:26
在抽签循环中使用wxYield似乎可以做到这一点。谢谢你的意见。
发布于 2011-08-24 12:03:19
如果你的应用程序需要超过5秒来绘制,那么它一定是在做一些繁重的计算。大多数情况下,例如,当窗口被移动或隐藏时,绘制的内容将不会改变。因此,您应该将计算中的输出存储在缓存中,以便根据需要在闪存中重新绘制。如果发生了一些变化,因此需要重新进行计算,则计算应该在一个单独的线程中完成,并在完成时更新缓存。
缓存的性质取决于计算的性质。在概念上,最简单的是内存位图,在需要时可以从其中复制像素。实际上,只有当计算涉及到单个像素的颜色,并且您使用的是双缓冲方案时,这才是合适的。也许你可以存储一些像几何学原语(线,正方形等),并从这些重新绘制。
这样做的好处是,它不仅解决了Win7问题,而且还将使应用程序更响应用户,因此更容易使用。
https://stackoverflow.com/questions/7160779
复制相似问题