Puppyです。お世話になっています。
環境はWin2000/98,VC6.0,MFCです。
やっとの思いでbitmapAはViewに貼り付けることができました。
下のように、大きなビットマップAの上に座標を指定して
bitmapB, Cを上書きしたいのですが、どうしたらよいのでしょうか?
描画の知識がないので、よろしくお願いします。
bitmap A
┌────────────┐
│ │
│ bitmap B │
│ ┌──┐ │
│ │ │ │
│ └──┘ │
│ bitmap C │
│ ┌──┐ │
│ │ │ │
│ └──┘ │
│ │
└────────────┘
追記です。
裏画面という方法でやりたいです。
今は、裏画面にビットマップAをはりつけて、描画はCDC::Bitbltしています。
やりたいことは、裏画面上でビットマップAにBとCを座標を指定して
はりつけたいです。そうすれば、後はBitBltすればいいのかなと思ってます。
どうやっていいのか、さっぱりわからないので参考になるホームページや
やりかたを教えて下さい。
よろしくお願いします。ペコリm(..)m
bitmap A を View に描画したのと同じ方法で、
ビットマップを、描画する始点を変えて
bitmap B、bitmap C を描画すれば、できますが。
たとえば、
bitmap B は、100,100
bitmap C は、300,300 を始点として描画する場合、
Viewの OnDraw の中で、(※ 直接描画する場合)
void XXXXView::OnDraw(CDC* pDC)
{
:
:
old = MemDC->SelectObject(bitmapA);
pDC->BitBlt(0,0,WidthA,HeightA,MemDC,0,0,SRCCOPY); // bitmap A を書く
:
:
MemDC->SelectObject(bitmapB);
pDC->BitBlt(100,100,WidthB,HeightB,MemDC,0,0,SRCCOPY); // bitmap B を書く
:
:
MemDC->SelectObject(bitmapC);
pDC->BitBlt(300,300,WidthC,HeightC,MemDC,0,0,SRCCOPY); // bitmap C を書く
MemDC->SelectObject(old);
こんな、かんじです。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
書いてる途中に更新されてたので、上が無駄になってしまいました。
>> 裏画面という方法でやりたいです。
の場合も同じように、
pDC のかわりに、裏画面用に作成した
DCに対してBitBlt してやればできます。
dc.DrawState(pt, size, &A, DSS_NORMAL, (HBRUSH)NULL);
では?
yas0302さん レスありがとうございます。
>こんな、かんじです。
>↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
>書いてる途中に更新されてたので、上が無駄になってしまいました。
ゴメンナサイですぅ。m(..)m
>> 裏画面という方法でやりたいです。
>の場合も同じように、
>pDC のかわりに、裏画面用に作成した
>DCに対してBitBlt してやればできます。
なんとなくわかりました。さっそく試してみます。
dairygoodsさん レスありがとうございます。
>dc.DrawState(pt, size, &A, DSS_NORMAL, (HBRUSH)NULL);
これだけでB, Cの上書きもできるのでしょうか???
解説を読んでも意味がさっぱりわかりませんでした。
>>dc.DrawState(pt, size, &A, DSS_NORMAL, (HBRUSH)NULL);
>これだけでB, Cの上書きもできるのでしょうか???
あ、Aじゃないですね。
裏画面のデバイスコンテキストを dc として、
dc.DrawState(pt, size, &B, DSS_NORMAL, (HBRUSH)NULL);
dc.DrawState(pt, size, &C, DSS_NORMAL, (HBRUSH)NULL);
とします。
解説はややこしいかもしれませんが、
ようするに位置pt、サイズsizeの矩形に何かを描画する関数です。
>裏画面のデバイスコンテキストを dc として、
>dc.DrawState(pt, size, &B, DSS_NORMAL, (HBRUSH)NULL);
>dc.DrawState(pt, size, &C, DSS_NORMAL, (HBRUSH)NULL);
>とします
わかりましたぁ。(^-^;
ありがとうございました。さっそく試してみます。