トップページ > 過去ログ > 記事閲覧
画像の合成について
名前:takatwu 日時: 2012/10/26 20:01

最近質問が多くて申し訳ありません。 今回、画像の合成について困っています。 まず、描画可能なアルファチャンネル付き画像Aと描画不可能な画像Bがあり、2つの画像の解像度は違います。 これをGraphBlend関数を使用して画像Aに画像Bを合成しようとしたのですが 解像度が違うためか-1が返ってきます。 そこで画像Aを描画対象にした状態でSetDrawBlendModeのアルファブレンドで 画像Bを拡大描画したところ出来上がった画像Aのアルファが全体的に薄く透けてしまいます。 そこで、SetDrawBlendModeのアルファブレンドを使用して画像を描画した時 描画先の画像のアルファを薄くしない方法はあるでしょうか? また、GraphBlendに解像度の違う画像ハンドルを指定できるようにはならないでしょうか?

Page: 1 |

Re: 画像の合成について ( No.1 )
名前:管理人 日時:2012/10/28 02:50

GraphBlend 関数の引数 BlendGrHandle に渡す画像のサイズが引数 GrHandle に渡す画像のサイズより 小さいとエラーを返すようになってしまっていました 修正版をアップしましたので、よろしければお試しください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) あと代替案としてされた方法についてですが、αブレンドは書き込むα値についても 乗算処理をしてしまうので、DX_BLENDMODE_ALPHA で描画先に描画した結果は 描画元の画像とは異なるものになってしまいます DX_BLENDMODE_ALPHA の代わりに DX_BLENDMODE_SRCCOLOR を使用して描画先に描画すると意図した 結果が得られると思いますので、よろしければお試しになってみてください DX_BLENDMODE_ALPHA では上手くいかない理由についてはこちらのスレッドの No.1 に書いてありますので ご興味がありましたらご覧ください http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2737
Re: 画像の合成について ( No.2 )
名前:takatwu 日時:2012/10/28 12:10

ありがとうございます。 無事、GraphBlend 関数でエラーが出なくなりました。 しかし、2つの画像サイズが違う時の結果が予想と違っていました。 GrHandleのサイズ丁度にBlendGrHandleを拡大縮小を行なって合成することは出来ないでしょうか? MakeScreenで作成した画像を仲介させてもいいと思ったのですが、可能であれば実装していただきたいです。
Re: 画像の合成について ( No.3 )
名前:管理人 日時:2012/10/28 15:16

少し考えてみたところ、現状の仕様でサイズの違う画像同士をブレンドさせるということは普通しないだろうなと思ったので ( 片方がはみ出ても良いブレンドって、普通しないよな・・・という・・・ ) GraphBlend と GraphBlendBlt の挙動を takatwuさんのご要望に沿うように BlendGrHandle 側が GrHandle 側のサイズに スケーリングされるように仕様を変更しました よろしければお試しになってみてください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: 画像の合成について ( No.4 )
名前:takatwu(解決) 日時:2012/10/28 16:01

ありがとうございます。 期待通りの結果が得られました。

Page: 1 |