windowsXP, VC++ 2008を使用しています。
ttp://vvbuibui.blog47.fc2.com/blog-entry-124.html
こちらのブログにある「ウィンドウの透明化」についての質問なのですが、ここの話を参考に以下のプログラムを組んでみました。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE,HINSTANCE,LPSTR,int ){
ChangeWindowMode(TRUE);
SetBackgroundColor(0,0,0);
SetUseBackBufferTransColorFlag(TRUE);
SetTransColor(0,0,0);
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK );
int image = LoadGraph( "Test.png" );
while( !ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE) ){
SetDrawMode( DX_DRAWMODE_BILINEAR );
DrawRotaGraph( 320, 240, 0.3, 0.0, image, TRUE );
SetDrawMode( DX_DRAWMODE_NEAREST );
}
DxLib_End();
return 0;
}
ブログの話をもう少し読み進めると以下の方法もあるとの事で、それも試してみました。 の部分を
SetBackgroundColor(0,0,0);
SetWindowLongA(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_LAYERED);//透明化
SetLayeredWindowAttributes(GetMainWindowHandle(),RGB(0,0,0),255,LWA_COLORKEY);
こちらの方法はウィンドウモードもフルスクリーンモードも透明化にはなりませんでしたorz
そもそもこの方法での透明化はあまり宜しくないのでしょうか?それとも自分のプログラムのせい?
話が逸れるのですが、DXライブラリのリファレンスにあるマスク関数のサンプルプログラムを使ってTest.pngを表示させても、今回の透明ウィンドウで表示したのと同じ感じでギザギザしていました。
このギザギザになってしまう状況、どうすることもできないのでしょうか?