10

私は wxpython を使用してマルチプラットフォーム アプリケーションに取り組んでおり、パネルに描画しているときにウィンドウがちらつく問題がありました。以前は、マウス モーション イベント中にバッファ (wx.Bitmap) に描画していましたが、OnPaint メソッドは次の行だけで構成されていました。

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

かなり標準的ですが、Windowsではちらつきの問題がありましたが、Linuxではすべて正常に機能しました。

メソッドを呼び出す問題を解決SetDoubleBuffered(True)しました__init__

奇妙なことに、BufferedPaintDC を使用しなくてもすべてが機能するようになりました。すべての描画部分が OnPaint メソッドで行われるように、アプリケーションを変更しました。私はバッファを使用せず、描画は wx.PaintDC で直接行われ、ちらつきの問題はまったくありません。

だから私の質問は: BufferedPaintDC はまったく役に立たないのですか? それともどういうわけか非推奨ですか?私は本「WxPython in Action」(2006)の所有者であり、SetDoubleBufferedについても言及していません

4

1 に答える 1

5

SetDoubleBuffered が実際にパネルにバッファリングされた dc を自動的に使用させる可能性が高く、ドキュメントにはこれらのクラスが非推奨であるとは記載されていません (そうであれば、非推奨になると思います)。

wxPython in Action について... 2006 年はずっと前のことです... 当時は SetDoubleBuffered メソッドが存在しなかったか、作成者が下位レベルでの動作を示したかった可能性があります。

于 2009-02-24T17:00:58.337 に答える