裏画面を作ってそこに描画する

裏画面を作ってそこに描画するには以下の手順が必要です。

1 CreateCompatibleDCでHDCを取得する
2 CreateCompatibleBitmapでHBITMAPを取得する
3 SelectObjectでHBITMAPをHDCに関連づける。尚、そのときの返戻値を取得する。(元に戻すため)
4 裏画面に描画したり、それを表画面に描画したりする。
5 使い終わったら、関連付けたオブジェクトを元に戻し、その後削除する。


プログラム部分

HBITMAP bmp,obmp;
HBRUSH br,obr;
HDC mem;
mem=CreateCompatibleDC(hdc);//HDCを取得
bmp=CreateCompatibleBitmap(hdc,100,100);//HBITMAPを取得
br=CreateSolidBrush(RGB(255,255,255));//HBRUSHを取得

obmp=SelectObject(mem,bmp);//HBITMAPを関連付ける
obr=SelectObject(mem,br);//HBRUSHをを関連付ける

//裏画面に描画(rectはどこかで初期化してください)
FillRect(mem,&rect,br);
TextOut(mem,0,0,"Kenichi",7);
//裏画面から表画面に描画
BitBlt(hdc,0,0,100,100,mem,0,0,SRCCOPY);

//関連付けられたオブジェクトを元に戻す
//HDCに関連付けられたGDIオブジェクトは削除できないからです
SelectObject(mem,obmp);
SelectObject(mem,obr);
//削除
DeleteObject(bmp);
DeleteObject(br);
DeleteDC(mem);

ハンドルやデバイスコンテキストの概念はヘルプや参考書を見て理解してください。
ちなみに、オブジェクトが削除できないとリソースが無くなって動作がおかしくなってしまします。
リソースが減っているかどうかは、いいかげんな方法ですがメモ帳やワードパッドの、バージョン情報の システムリソースの値を確認すれば大体分かります。(本当にいいかげんですね)


戻る