トップページ > 過去ログ > 記事閲覧
画像の合成
名前:とい 日時: 2009/03/01 10:32

DrawBlendGraph関数のように 特定の画像同士が重なったところだけを合成して描画したいのですが、 不可能でしょうか? 欲を言えば合成する画像の透過度(?)も設定したいです。 擬似的に表現する方法でも良いので、どうかご教示お願いします。

Page: 1 |

Re: 画像の合成 ( No.1 )
名前:管理人 日時:2009/03/01 13:31

DXライブラリには重なった部分だけブレンド処理を行うという機能はなく、 また複数の画像を合成して描画するという機能自体 DrawBlendGraph しかないので、 擬似的にもといさんのご希望される処理を実現するのは難しいかもしれません もしかしたら他の方法で表現が可能かもしれませんので、宜しければ 具体的にはどのようなことをされようとしているのか教えていただけないでしょうか?
Re: 画像の合成 ( No.2 )
名前:とい 日時:2009/03/01 16:06

言葉では説明しにくいので・・・ ttp://down11.ddo.jp//uploader/download/1235886244.zip/attatch pass「toi」 アップローダーをお借りしました。 中に入っている1の上に2を経過時間で少しずつずらし、描画したいと思いました。 2の描画か所を変えたいということです。 2は1の上じゃないと描画されないようにしたいです。 1の透明度に合わせて2も透明度が変わればより良いのですが・・・きついですよね; または、予め2の透過度を設定しておくか・・・ SetDrawBlendModeの光ブレンドでできないかなーと思いましたが、2が1以外の場所にも描画されてしまうので、無理でした; 周りが真っ黒の場合でしたら、MULで良いのですが・・・ 背景があるので無理でした。
Re: 画像の合成 ( No.3 )
名前:管理人 日時:2009/03/03 01:08

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をお使いの場合は『リビルド』をして下さい)
Re: 画像の合成 ( No.4 )
名前:とい 日時:2009/03/03 18:49

おぉ! そんな関数があったとは・・・ 本当にありがとうございました! おかげさまでやりたいことができました。

Page: 1 |