Windows Forms アプリケーションで、いろいろ画面の描画処理(特に画像を動かしたり、頻繁に書き換えたり)すると、速度が遅くなったり、ちらつきが発生したりします。
その解決方法。ダブルバッファリングを使用します。
フォームのロード時イベントに、以下の文を追加します。
Me.SetStyle(ControlStyles.DoubleBuffer, True)
Me.SetStyle(ControlStyles.UserPaint, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
ちなみに、VS2003で私がやってみたところ、Me.SetStyleがインテリセンスで出現しませんでした。
しかし、コンパイルできるので大丈夫かと思います。
ダブルバッファリングの仕組みとしては、まず、メモリ上にすべての描画して、それを画面に転送する、ってな感じです。画面のちらつきが少なくなります。
画面のちらつきを押さえるために、昔のゲームでもよく使われていた技術ですね。
あのころは、少ないVRAMや、場合によっては他の用途に使われるメモリ領域(たとえば漢字RAM領域とか?)なども駆使して、がんばってましたねぇ。
今では、(.NETでプログラミングする場合は)たった3行で実現できてしまいます。
いやはや、技術の進歩はすごいですね。
Manual.Article.TrackBack :: @IT -- .NET TIPS ダブル・バッファリングにより描画を行うには?