回答ありがとうございます。
処理の位置を変えたりBMP形式にしたり何パターンか試しましたがダメでした。どうやら描画可能なグラフィックに対する
透過処理は仕様上不可みたいですね。
その後、SetDrawBlendModeを使ってなんとか画像を透けさせられないか試したところ以下のコードで望ん
だ通りの処理を行うことに成功しました!
//描画可能のグラフィックを円で塗りつぶし、透過し背景を表示する
#include "all.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
if(ChangeWindowMode(TRUE) != 0) {
return -1;
}
if(DxLib_Init() != 0) {
return -1;
}
if(SetDrawScreen(DX_SCREEN_BACK) != 0) {
DxLib_End();
return -1;
}
SetBackgroundColor(220, 220, 220);
SetGraphMode(960, 540, 16);
int handle, handle2, hYobi;
//画像の読み込み
handle = LoadGraph("pic/フィールド1.png", true);
hYobi = LoadGraph("pic/背景.png", true);
//描画対象にできるグラフィックの取得
handle2 = MakeScreen(960, 540, true);
//描画対象をhandle2へ
SetDrawScreen(handle2);
//ロードしておいた画像をhandle2にコピー
DrawGraph(0, 0, handle, true);
SetDrawBlendMode( DX_BLENDMODE_MUL, 0 ); //アルファ値ゼロで乗算
DrawCircle(5, 325, 50, GetColor(255, 255, 255), true);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 255 );
SetDrawScreen(DX_SCREEN_BACK);
DrawGraph(0, 0, hYobi, TRUE);
DrawGraph(0,0,handle2,TRUE);
ScreenFlip();
WaitKey();
DxLib_End();
return 0;
}
これでフィールド1という画像を円でくりぬいて、後ろに張り付けてある背景を表示することができました。
(ちなみに、はじめ背景.pngを使わずにSetBackgroundColorで設定した背景色を表示しようとしたところ、こちらは
設定した色がうまく表示されず失敗に終わりました。)
おかげさまで次のステップへ進めそうです。ありがとうございました。