• ベストアンサー

windowsプログラミング(画面の更新について)

windowsプログラミングの練習をしているのですが、連続して画面を更新すると、どうしても画面のちらつきが出てしまいます。連続して更新しても、画面のちらつきを回避できる方法は無いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • circuit
  • ベストアンサー率72% (13/18)
回答No.2

windowsで描画を行うとき、通常は描画する前に一度画面が消去され、そこへ新しく描画をしていきます。 GUIや固定画面などでは、この消去は気にならないものですが、連続で描画を行うとちらつきとして見えてきます。 これを対処するには、一度バックバッファ(メモリ上の画面)に描画を行い、それをBitBltなどでメインウィンドウに転送するようにします。 #転送は消去を行わず上書きっぽくなるのでちらつきは見えません バックバッファに書いて転送する方法をダブルバッファリングといいます。 このキーワードで検索すると結構参考が出てきますよ。 ちなみにコレを実装するには、メインウィンドウと互換のあるビットマップ(CreateCompatibleBitmap)とデバイスコンテキスト(CreateCompatibleDC)を生成します。 SelectObjectで互換HDCに互換Bitmapを選択させた状態で、互換HDCに対して描画を行います。 このとき削除を自前で実装(塗りつぶしなど)しないと画面が上書き状態になります。 描画後に、メインウィンドウのコンテキストハンドルにBitBltします。 具体的なコードは、ぐぐってみてください。

参考URL:
http://www13.plala.or.jp/kymats/study/MULTIMEDIA/bmp_multibuf.html

その他の回答 (1)

  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

よく最初に気になる問題ですね。 メモリデバイスコンテキストを利用すると良いと思いますよ。 CreateCompatibleDCなどを調べてみてください。

関連するQ&A