> 1.既存のグラフィックハンドルから、α値を明度にして(完全な透明は黒、完全な不透明は白といったように)新しいグラフィックハンドルを生成する関数
既存の機能でも以下のような処理を行うことでα値を明度にするグラフィックハンドルを作成することが可能です
// 同じサイズのグラフィックハンドルを作成
int SizeX, SizeY;
GetGraphSize( GraphHandle, &SizeX, &SizeY );
int NewGraphHandle = MakeScreen( SizeX, SizeY, FALSE );
// 作成したグラフィックハンドルにα値を R,G,B,A に割り当てて転送
GraphBlendBlt( GraphHandle, GraphHandle, NewGraphHandle, 255, DX_GRAPH_BLEND_RGBA_SELECT_MIX, DX_RGBA_SELECT_SRC_A, DX_RGBA_SELECT_SRC_A, DX_RGBA_SELECT_SRC_A, DX_RGBA_SELECT_SRC_A );
> 2.画像の描画時に、別の画像(MakeScreenで生成した画像や既存のグラフィックハンドル)の明度をα値として描画する関数
描画時に別の画像の明度をα値として描画する関数はありませんが、1の実現に使用した機能を使用して明度( R成分 )をα値とした画像を作成することで
『別の画像の明度をα値として描画する』処理は実現することが可能です
// 同じサイズのグラフィックハンドルを作成
int SizeX, SizeY;
GetGraphSize( GraphHandle1, &SizeX, &SizeY );
int NewGraphHandle = MakeScreen( SizeX, SizeY, TRUE );
// 画像AのR,G,Bと、画像BのRをα値として作成したグラフィックハンドルに転送
GraphBlendBlt( GraphHandle1, GraphHandle2, NewGraphHandle, 255, DX_GRAPH_BLEND_RGBA_SELECT_MIX, DX_RGBA_SELECT_SRC_R, DX_RGBA_SELECT_SRC_G, DX_RGBA_SELECT_SRC_B, DX_RGBA_SELECT_BLEND_R );
// 描画
DrawGraph( x, y, NewGraphHandle, TRUE );
// 作成したグラフィックハンドルを削除
DeleteGraph( NewGraphHandle );