Двойная буферизация с помощью wxpython

Я работаю над многоплатформенным приложением с помощью wxpython, и у меня были проблемы с проблесками в окнах, а на панели - панель. Раньше я рисовал буфер (wx.Bitmap) во время событий движения мыши, а мой метод OnPaint состоял только из строки:

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

Довольно стандартный, но все же у меня были проблескивающие проблемы в Windows, в то время как все отлично работало в Linux.

I решил мою проблему, вызвав SetDoubleBuffered(True) в методе __init__.

Странно, что теперь все работает, даже если я больше не использую BufferedPaintDC. Я изменил свое приложение так, чтобы вся часть чертежа была сделана в методе OnPaint. Я не использую буфер, а чертеж выполняется непосредственно на wx.PaintDC без каких-либо мерцающих проблем.

Итак, мой вопрос: BufferedPaintDC абсолютно бесполезен? Или как-то не рекомендуется? Я являюсь владельцем книги "WxPython in Action" (2006) и даже не упоминает SetDoubleBuffered

Ответ 1

Существует высокая вероятность того, что SetDoubleBuffered фактически заставит вашу панель использовать буфер с буферизацией автоматически, в документации не упоминается, что эти классы устарели (и я скорее думаю, что если бы это было так).

О wxPython в действии... 2006 год был давным-давно... возможно, что метод SetDoubleBuffered не существовал тогда или что автор хотел показать, как все работает на более низком уровне.