我正在使用wxpython处理多平台应用程序,并且在绘制Panel时我在Windows上出现了闪烁问题.我曾经在鼠标运动事件中绘制缓冲区(wx.Bitmap),而我的OnPaint方法只是在线组成:
dc = wx.BufferedPaintDC(self, self.buffer)
相当标准,但我仍然在Windows上有闪烁的问题,而一切都在Linux上运行良好.
我解决我的问题调用SetDoubleBuffered(True)
的__init__
方法.
奇怪的是,即使我不再使用BufferedPaintDC,现在一切正常.我更改了我的应用程序,以便所有绘图部分都在OnPaint方法中完成.我不使用缓冲区,直接在wx.PaintDC上完成绘图,完全没有闪烁问题.
所以我的问题是:BufferedPaintDC完全没用吗?或者以某种方式弃用?我是"WxPython in Action"(2006)一书的所有者,它甚至没有提到SetDoubleBuffered
SetDoubleBuffered很可能实际上使您的面板自动使用缓冲的dc,文档没有提到这些类已被弃用(我认为如果是这样的话,我认为他们会这样做).
关于wxPython in Action ... 2006很久以前......有可能当时不存在SetDoubleBuffered方法,或者作者想要展示在较低级别工作的方式.