2009-02-24 18 views
10

Sto lavorando a un'applicazione multipiattaforma con wxpython e ho avuto problemi di sfarfallio su Windows, mentre disegnavo su un pannello. ho usato per disegnare su un buffer (wx.Bitmap) durante gli eventi movimenti del mouse e il mio metodo OnPaint era composto da solo on line:Double buffering con wxpython

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

piuttosto standard, ma ancora non avevo sfarfallio problemi su Windows, mentre tutto ha funzionato bene su Linux.

I risolto il mio problema chiamando SetDoubleBuffered(True) nel metodo __init__.

La cosa strana è che ora tutto funziona anche se non uso più BufferedPaintDC. Ho cambiato la mia applicazione in modo che tutta la parte del disegno sia fatta nel metodo OnPaint. Non utilizzo un buffer e il disegno viene eseguito direttamente su un wx.PaintDC senza alcun problema di sfarfallio.

Quindi la mia domanda è: BufferedPaintDC è totalmente inutile? O in qualche modo deprecato? Sono proprietario del libro "WxPython in Action" (2006) e non menziona nemmeno SetDoubleBuffered

risposta

5

C'è un'alta probabilità che SetDoubleBuffered faccia effettivamente utilizzare automaticamente un buffer dc al pannello, la documentazione non dire che quelle classi sono deprecate (e penso che lo farebbero in questo caso).

Informazioni su wxPython in Action ... Il 2006 è stato molto tempo fa ... è possibile che il metodo SetDoubleBuffered non esistesse o che l'autore volesse mostrare come funzionano le cose al livello inferiore.