現状の減算ブレンド( DX_BLENDMODE_SUB )でもA値減算をすることができますので、
よろしければお使いください m(_ _)m
// アルファチャンネルつきの描画可能画像を黄色で塗りつぶした後
// 画像の中心を円形にくりぬいたものを描画するサンプルプログラム
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int screen ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// アルファチャンネルつきの描画対象にできるグラフィックハンドルを作成
screen = MakeScreen( 640, 480, TRUE ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 描画対象にできるグラフィックハンドルを描画対象に設定
SetDrawScreen( screen ) ;
// 描画対象にできるグラフィックハンドルをクリア
ClearDrawScreen() ;
// 描画対象にできるグラフィックハンドル全体を黄色の四角形で塗りつぶす
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ) ;
DrawBox( 0, 0, 640, 480, GetColor( 255,255,0 ), TRUE ) ;
// 描画対象にできるグラフィックハンドルの中心を減算ブレンドで円形にくりぬく
SetDrawBlendMode( DX_BLENDMODE_SUB, 255 ) ;
DrawCircle( 320, 240, 128, GetColor( 255,255,255 ), TRUE ) ;
// 描画対象を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 裏画面をクリア
ClearDrawScreen() ;
// 裏画面全体を灰色の四角形で塗りつぶす
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ) ;
DrawBox( 0, 0, 640, 480, GetColor( 128,128,128 ), TRUE ) ;
// 裏画面に描画対象にできるグラフィックハンドルを描画する
DrawGraph( 0, 0, screen, TRUE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}