プロが教えるわが家の防犯対策術!

CDC::SelectObject を使用して、
ビットマップをメモリDCに割り当てたあと、
CDC::BitBltで画面に表示しています。

すでに、画面に表示されているビットマップを残したまま、
2枚目のビットマップを表示したいのですが、
2枚目を表示すると同時に1枚目のビットマップが消えてしまいます。
(当然ですが。。。)

1枚目(すでに表示させているビットマップ)を残し、
2枚目のビットマップを同じ画面に表示するには、
どうすればよいでしょうか?

A 回答 (2件)

1枚目をBitBltしたときとは違う座標に2枚目をBitBltすれば、1枚目が出たまま2枚目も出ます。



WM_PAINTを処理するとき(OnPaint()内)でも同じように1枚目と2枚目をBitBltしてやることを忘れないようにしてください。これを忘れて、例えばWM_PAINT処理時に2枚目だけBitBltしてしまうと、1枚目が再描画されないので消えてしまいます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

表示したいビットマップが10枚ほどあるのですが、
(10回BitBltせずに)1回のBitBltですべて表示する方法はありませんでしょうか?
理想としては、
すでに画面に表示してあるビットマップと新たに表示するビットマップを、
一回のBitBltで表示させたいのですが。。。

お礼日時:2005/06/26 20:50

あります。



最終的に表示したい大きさのビットマップをメモリDCに割り当てて、そのメモリDCに対して10回のBitBltを行います。そうして完成したビットマップを、今度は1回のBitBltで画面に表示します。

この方法であれば、WM_PAINTで再描画するビットマップはこの「最後に画面にBitBltするビットマップ」になるので、再描画処理も少し楽になります。

ちなみに、表示したいビットマップの一部が重なっているときには、素直に全部画面にBitBltすると重なっている部分がちらついてしまうので、1枚にまとめてからBitBltするのは必須のテクニックになります。
    • good
    • 0
この回答へのお礼

出来ました!ありがとうございました。

お礼日時:2005/06/26 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています