リファレンスには載っていませんが、DXライブラリにも UpdateLayerdWindow を使用して半透明の画像を
デスクトップに表示する機能がありますので、よろしければ以下の『Test1.bmp を透明度 50% でデスクトップに表示する』
サンプルプログラムを参考にその機能を使ってみてください m(_ _)m
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int GraphHandle ;
int ScreenHandle ;
int SoftImageHandle ;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// 画面サイズを設定
SetGraphMode( 800, 600, 32 ) ;
// UpdateLayerdWindow を使用する設定
SetUseUpdateLayerdWindowFlag( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 乗算済みアルファ用の画像として読み込む設定にする
SetUsePremulAlphaConvertLoad( TRUE ) ;
// 画像の読み込み
GraphHandle = LoadGraph( "Test1.bmp" );
// 乗算済みアルファ用の画像として読み込む設定を解除
SetUsePremulAlphaConvertLoad( TRUE ) ;
// 画面取り込み用のソフトウエア用画像を作成
SoftImageHandle = MakeARGB8ColorSoftImage( 800, 600 ) ;
// 描画対象にできるアルファチャンネル付き画面を作成
ScreenHandle = MakeScreen( 800, 600, TRUE ) ;
// 描画先をアルファチャンネル付き画面にする
SetDrawScreen( ScreenHandle ) ;
// メインループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// 描画ブレンドモードを乗算済みアルファ用のアルファブレンドで透明度 50% に設定
SetDrawBlendMode( DX_BLENDMODE_PMA_ALPHA, 128 ) ;
// 画像を描画
DrawGraph( 100, 100, GraphHandle, TRUE ) ;
// 描画先の画像をソフトイメージに取得する
GetDrawScreenSoftImage( 0, 0, 800, 600, SoftImageHandle ) ;
// 取り込んだソフトイメージを使用して透過ウインドウの状態を更新する
UpdateLayerdWindowForPremultipliedAlphaSoftImage( SoftImageHandle ) ;
// 少し待つ
Sleep( 12 ) ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
透過ウィンドウを使用するために使用するリファレンスに載っていない関数は以下の通りです
// UpdateLayerdWindowForBaseImage や UpdateLayerdWindowForSoftImage を使用するかどうかを設定する
// ( DxLib_Init を呼び出す前に実行する必要があります )
// Flag = TRUE:使用する FALSE:使用しない
int SetUseUpdateLayerdWindowFlag( int Flag ) ;
// 乗算済みアルファのソフトウエアイメージハンドルを使用して UpdateLayerdWindow を行う
// ( ScreenFlip の代わりにこの関数で描画結果をデスクトップ画面に反映します )
int UpdateLayerdWindowForPremultipliedAlphaSoftImage( int SIHandle ) ;
あと、サンプルでも MakeScreen で作成したアルファチャンネルつきの画像を使用していますが、
アルファチャンネルつきの画像に対して半透明の描画を行う場合、『乗算済みアルファ』という手法を
使用しないと正常な描画結果を得ることができません
なので上記のサンプルでも関数SetUsePremulAlphaConvertLoad や ブレンドモードDX_BLENDMODE_PMA_ALPHA などを
使用して『乗算済みアルファ』の処理を行っています
もし『乗算済みアルファ』についてまだご存知ではありませんでしたら、こちらの『乗算済みアルファ』についての
解説ページをご覧ください m(_ _)m
< 乗算済みアルファのすすめ >
https://dxlib.xsrv.jp/lecture/PremulAlpha/PremulAlpha.html