お世話になっております。
以下のようなプログラムでバグ(?)が起きました。
int MAKESCREENHANDLE = MakeScreen(256,256);
int GRAPH1 = LoadGraph("A.png");
int GRAPH2 = LoadGraph("B.png");
...(省略)...メインループ
SetDrawScreen(MAKESCREENHANDLE);
ClearDrawScreen();
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);
DrawExtendGraph(0, 0, 256, 256, GRAPH1, TRUE);
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 180);
DrawExtendGraph(0, 0, 256, 256, GRAPH2, TRUE);
SetDrawScreen(DX_SCREEN_BACK);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
DrawExtendGraph(0, 0, 256, 256, MAKESCREENHANDLE, TRUE);
...
これは単に二つの画像を組み合わせて1つの画像にするだけなのですが、(なのでほかのやり方もあると思いますが、)
これを実行すると、GRAPH1がGRAPH2のブレンドと一緒になってしまうというバグ(?)が起きます。
つまり、GRAPH1もGRAPH2と同じように
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 180);
のブレンドになってしまう、ということです。
しかし、
...(省略)...メインループ
SetDrawScreen(MAKESCREENHANDLE);
ClearDrawScreen();
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);
DrawExtendGraph(0, 0, 256, 256, GRAPH1, TRUE);
SetDrawBlendMode(DX_BLENDMODE_ADD, 180);
DrawExtendGraph(0, 0, 256, 256, GRAPH2, TRUE);
SetDrawScreen(DX_SCREEN_BACK);
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
DrawExtendGraph(0, 0, 256, 256, MAKESCREENHANDLE, TRUE);
...
GRAPH2のブレンドをDX_BLENDMODE_ADDに変更したところ、GRAPH1はちゃんと
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 255);
のブレンドで表示されました。
わかりにくいかもしれませんが、確認してくださると助かります。
もう一つ、バグ(?)を発見しました。
DrawFormatStringFToHandleなのですが、上下が少し途切れるという現象が発生しています。
DrawFormatStringToHandleでは問題なく表示されます。
int FONT = CreateFontToHandle("Meiryo UI", 20, 5, DX_FONTTYPE_ANTIALIASING, -1, -1, TRUE);
この設定で(仮)
DrawFormatStringFToHandleで、座標をいろいろなところに移動させながら(小数有り)、"000"を表示してみると、
0の上がほんの少し途切れたり、0の下がほんの少し途切れたりします。そんなに気になりはしないのですが、
バグ(?)なのかもしれないと思い、報告いたしました。
お手数をおかけしますが、よろしくお願いいたします。