- ベストアンサー
Active Basic 画像表示 添削願い
- AB4.23.00を使っています。複数画像を表示しようと頑張っているのですが、どうやっても出来ません。
- back.bmpの上にA.bmpを描写したいです。透過処理などはいらないので、どうすれば表示することが出来るかを教えてください。今は、どちらか片一方しか表示されません。
- http://www.geocities.jp/debu0510/basic/main17.htmlを参考にさせていただいたのですが、CreateCompatibleBitmap関数の使い方が分かりません。これは、どのようにして使用するのでしょうか。こちらもご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
実行する順序が違います 最初にメモリーDC用のビットマップを生成してメモリーDCに選択してから 背景やキャラクターを転送(描画)しましょう // hMemBmpの生成 hMemBmp = CreateCompatibleBitmap(hDC, 640, 480 ) // hMemDCに hMemBmpを選択 SelectObject( hMemDC, hMemBmp ); //背景の描画 // hBackDCにhBackBmpを選択 SelectObject( hBackDC, hBackBmp ) // hBackDCからhMemDCへ転送 BitBlt( hMemDC, 0, 0, 640, 480, hBackDC, 0, 0, SRCCOPY ) //キャラクタの描画 // hMyDCにhMyBmpを選択 SelectObject( hMyDC, hMyBmp ) // hMyDCからhMemDCへ転送 BitBlt( hMemDC, 0, 0, 40, 50, hMyDC, 0, 0, SRCCOPY ) ReleaseDC( hMainWnd, hDC )
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
hMyDC=CreateCompatibleDC(hBackDC) を hMyDC=CreateCompatibleDC(hDC) でいいのでは ・・・ '描写 ' 背景画像は hMemDCではなく hBackDCに選択する SelectObject(hBackDC,hBackBmp) BitBlt(hMemDC,0,0,640,480,hBackDC,0,0,SRCCOPY) ' キャラクタ画像は hMemDCに選択するのではなく hMyDCに選択する SelectObject(hMyDC,hMyBmp) BitBlt(hMemDC,0,0,40,50,hMyDC,0,0,SRCCOPY) といった具合ですよ hMemDC用のBitmapも生成して描画の前に選択しておきましょう hMemBmp = CreateCompatibleBitmap( hDC, 640, 480 ) SelectObject( hMemDC, hMemBmp ) といった具合で
お礼
ご回答ありがとうございます。 以下のコードで実行したのですが、画面が真っ黒になっただけでした。 すみませんが、もう一度添削の方をお願いします。 '描写 SelectObject(hBackDC,hBackBmp) BitBlt(hMemDC,0,0,640,480,hBackDC,0,0,SRCCOPY) SelectObject(hMyDC,hMyBmp) BitBlt(hMemDC,0,0,40,50,hMyDC,0,0,SRCCOPY) hMemBmp=CreateCompatibleBitmap(hDC,640,480) SelectObject(hMemDC,hMemBmp) BitBlt(hDC,0,0,640,480,hMemDC,0,0,SRCCOPY) ReleaseDC(hMainWnd,hDC) 他の変更はありません。 hMemBmpをグローバルでHBITMAPとして作成しただけです
お礼
理解できました!! ありがとうございました!!