【问题标题】:Double buffering with wxpython使用 wxpython 进行双缓冲
【发布时间】:2010-10-09 12:39:01
【问题描述】:

我正在使用 wxpython 开发一个多平台应用程序,但在面板上绘图时,我在 Windows 上遇到了闪烁问题。 我曾经在鼠标运动事件期间在缓冲区(wx.Bitmap)上绘制,而我的 OnPaint 方法仅由在线组成:

dc = wx.BufferedPaintDC(self, self.buffer)

相当标准,但我在 Windows 上仍然存在闪烁问题,而在 Linux 上一切正常。

解决了我的问题__init__ 方法中调用SetDoubleBuffered(True)

奇怪的是,即使我不再使用 BufferedPaintDC,现在一切正常。我更改了我的应用程序,以便所有绘图部分都在 OnPaint 方法中完成。我不使用缓冲区,直接在 wx.PaintDC 上完成绘图,完全没有闪烁问题。

所以我的问题是:BufferedPaintDC 完全没用吗?还是以某种方式弃用?我是“WxPython in Action”(2006 年)一书的所有者,它甚至没有提到 SetDoubleBuffered

【问题讨论】:

    标签: python user-interface wxpython doublebuffered


    【解决方案1】:

    很有可能 SetDoubleBuffered 实际上使您的面板自动使用缓冲 dc,文档没有提到这些类已被弃用(如果是这种情况,我宁愿认为它们会被弃用)。

    关于 wxPython in Action... 2006 年是很久以前的事了... 可能当时不存在 SetDoubleBuffered 方法,或者作者想展示事情在较低级别是如何工作的。

    【讨论】:

      最近更新 更多