DrawBlendGraph に、ブレンドする画像の座標を設定できる機能を追加した非公開の関数
DrawBlendGraphPos を使用したらなんとか実現できました
宜しければこちらのテストプログラムをご覧になってみてください
http://homepage2.nifty.com/natupaji/temp/DrawBlendGraphPosTest.zip
DrawBlendGraphPos は以下のように定義されています
// ブレンド画像と合成して画像を描画する( ブレンド画像の起点座標を指定する版 )
int DrawBlendGraphPos( int x, int y, int GrHandle, int TransFlag, int bx, int by, int BlendGraph, int BorderParam, int BorderRange ) ;
int x, int y : 描画する画像の座標
int GrHandle : 描画する画像のハンドル
int TransFlag : 描画する画像の透過処理を行うかどうか( TRUE:行う FALSE:行わない )
int bx, int by : ブレンド処理用の画像のずらし座標値( (x,y)=(0,0) で DrawBlendGraph と全く同じ効果になります )
int BlendGraph : ブレンド処理用の画像のハンドル
int BorderParam : 境界位置(0〜255)
int BorderRange : 境界幅(指定できる値は1、64、128、255の4つ)
DrawBlendGraph に引数 bx, by が追加されたものです
この関数は元々ワイプ処理( 画面切り替え処理 )用に追加したものですが、BorderParam に 128、
BorderRange に 255 を指定すると丁度 BlendGraph のアルファ値をそのまま GrHandle のアルファ値と
合成して描画するのと同じになるということに気が付きました
( なので、今回のような用途で使用する場合は BorderParam は 128、BorderRange は 255 と
決め打ちしてしまってよいと思います )
ただ、この関数はブレンド処理用の画像と描画する画像のサイズが一致していないとエラーが発生する仕様となっているので、
テストプログラムのように 1.bmp もサイズを 256x256 にしています、
また、LoadBlendGraph で読み込める画像はグレースケール画像なので、アップして頂いた
1.png をグレースケール画像にしています
ご要望の通りに描画するには座標の計算がややこしいかもしれませんが、一応こちらの機能で
実現できましたので、宜しければお試しになってみてください
あと、今回のテストプログラムを作成する過程で DrawBlendGraph 系のブレンド処理に関する
バグが見つかりましたので、宜しければこちらの修正版をお使いになってください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)