お世話になっております。
c#にて、MakeScreenで作成したスクリーンに半透明のpng画像を描画したものをウィンドウに描画すると元の画像よりも透明度が高くなってしまい困っています。
MakeScreenを通しても元画像の透明度を維持したいのですが可能でしょうか?
本現象は下記のコードで再現できます。
コードで使っている画像(img.png)はこちらです。→ ttps://ux.nu/UMxg8
global using static DxLibDLL.DX;
namespace Program {
internal class Program {
static void Main() {
SetGraphMode(900, 600, 32);
ChangeWindowMode(TRUE);
DxLib_Init();
var img = LoadGraph("img.png"); //半透明画像
//アルファチャンネル付きスクリーン
var tmpSCR = MakeScreen(300, 300, TRUE);
SetDrawScreen(tmpSCR);
DrawGraph(0, 0, img, TRUE);
//アルファチャンネル付きスクリーン2
var tmpSCR2 = MakeScreen(300, 300, TRUE);
SetDrawScreen(tmpSCR2);
DrawGraph(0, 0, tmpSCR, TRUE);
SetDrawScreen(DX_SCREEN_BACK);
DrawBox(0, 0, 900, 600, GetColor(255, 255, 255), TRUE); //見やすいように白背景にする
DrawGraph(0, 0, img, TRUE); //元画像を直で描画
DrawGraph(300, 0, tmpSCR, TRUE); //1枚のスクリーン経由で描画
DrawGraph(600, 0, tmpSCR2, TRUE); //2枚のスクリーン経由で描画
ScreenFlip();
WaitKey();
}
}
}