こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ビットマップを表示させる(MFC)

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

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

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

投稿日時 - 2005-06-26 18:36:47

QNo.1474735

困ってます

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

あります。

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

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

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

投稿日時 - 2005-06-26 21:02:00

お礼

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

投稿日時 - 2005-06-26 22:29:39

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

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

投稿日時 - 2005-06-26 20:20:41

お礼

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

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

投稿日時 - 2005-06-26 20:50:04

あなたにオススメの質問