別の手段がありませんでしたので機能を追加しました
よろしければこちらのバージョンをダウンロードしてください
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
以下の関数を追加しました
// ソフトウエアで扱うイメージに含まれるピクセルのアルファ値をチェックする
// 戻り値
// -1:エラー
// 0:画像にアルファ成分が無い
// 1:画像にアルファ成分があり、すべて最大(255)値
// 2:画像にアルファ成分があり、存在するアルファ値は最小(0)と最大(255)もしくは最小(0)のみ
// 3:画像にアルファ成分があり、最小と最大以外の中間の値がある )
int CheckPixelAlphaSoftImage( int SIHandle ) ;
LoadGraph で読み込んだ画像に半透明要素が含まれているかどうかを調べる関数を考えてみたのですが、
グラフィックハンドルのデータ構造の関係でバグが発生しそうだったのでソフトウエア画像で
判断する関数にしました
使い方は以下のような感じです
int SoftHandle, GraphHandle ;
int ValidAlpha ;
// 画像をソフトウエアで扱うイメージとして読み込む
SoftImage = LoadSoftImage( "Test.png" ) ;
// ソートが必要なアルファ値( 中間の半透明のアルファ値 )が画像内に含まれるかチェック
// ( 戻り値が 3 の場合は中間のアルファ値が画像内にある )
ValidAlpha = CheckPixelAlphaSoftImage( SoftImage ) == 3 ;
// ソフトウエア画像からグラフィックハンドルを作成
GraphHandle = CreateGraphFromSoftImage( SoftImage ) ;
// ソフトウエア画像は削除
DeleteSoftImage( SoftImage ) ;
一度ソフトウエア画像として読み込まなければならないので一手間増えてしまいますが、ご了承下さい orz