• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Active Basic 画像表示 添削願い)

Active Basic 画像表示 添削願い

このQ&Aのポイント
  • AB4.23.00を使っています。複数画像を表示しようと頑張っているのですが、どうやっても出来ません。
  • back.bmpの上にA.bmpを描写したいです。透過処理などはいらないので、どうすれば表示することが出来るかを教えてください。今は、どちらか片一方しか表示されません。
  • http://www.geocities.jp/debu0510/basic/main17.htmlを参考にさせていただいたのですが、CreateCompatibleBitmap関数の使い方が分かりません。これは、どのようにして使用するのでしょうか。こちらもご教授お願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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 )

if-so-at
質問者

お礼

理解できました!! ありがとうございました!!

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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 ) といった具合で

if-so-at
質問者

お礼

ご回答ありがとうございます。 以下のコードで実行したのですが、画面が真っ黒になっただけでした。 すみませんが、もう一度添削の方をお願いします。 '描写 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として作成しただけです

関連するQ&A