トップページ > 過去ログ > 記事閲覧
ブレンドファイルの扱いについて
名前:Solo 日時: 2007/08/01 21:49

初めまして。 いつも DxLib を使わせて頂いています。 ブレンド画像の扱いについて、どなたかご存知の方はいないかと 質問させて頂きます。 LoadBlendGraph ではなく、LoadGraph で読み込んだアルファチャ ンネル付きの画像 (png) を SetBlendGraph で指定して使ってい るのですが、この関数に指定できるハンドルは DerivationGraph で作成した分割ハンドルを指定することはできませんか? アルファチャンネルの位置を動的に移動、もしくはスクロールさ せたいので、DerivationGraph でハンドルを指定できたら言う事 ないのですが…。 MakeScreen で描画順位を変えてアルファチャンネルを使わなく する方法や、マスクを使う方法も考えられますが、 前者は処理速度の面で渋り、後者は2値なのでジャギーが気になり、 できればアルファチャンネルで動的なクリッピングを行いたいと 考えています。 その為には DerivationGraph で描画する範囲のアルファチャンネル のみを読み取り、描画する画像にブレンドファイルを適用させる、 という形が必要かなと思いまして。 // ---------------------------------------------- // 画像を読み込む (640x480) int Image = LoadGraph("Image.bmp"); // 画面全体のクリッピング用のアルファチャンネル付画像を読み込む (640x480) int BlendImage = LoadGraph("BlendImage.png"); // 画像の座標 (x64,y64) から座標 (x128,y128) までの // 64 x 64 ピクセルの分割画像ハンドルを作成 int Image_Div = DerivationGraph( 64, 64, 64, 64, Image ); // 同じくクリッピング用アルファチャンネル付き画像の // 座標 (x320, y320) から座標 (x384, y384) までの // 64 x 64 ピクセルの分割画像ハンドルを作成 int BlendImage_Div = DerivationGraph( 320, 320, 64, 64, BlendImage ); SetBlendGraph( BlendImage_Div, 128, 128 ); DrawGraph( 320, 240, Image_Div, true ); // 座標 320, 240 に描画 ScreenFlip(); WaitKey(); // ---------------------------------------------- // 結果、共有元のBlendImageでブレンドされ、 // 分割ハンドルが無効になっている 現在は MakeScreen で一時的な領域を作って そちらで対処していますが、こちらに画像を 持ってくるとガンマ値が変わったように アルファ値が元のファイルと異なって しまい、少し混乱しています。 (もちろん色深度は32bitです)

Page: 1 |

Re: ブレンドファイルの扱いについて ( No.1 )
名前:管理人 日時:2007/08/07 13:23

Soloさんはじめまして、DXライブラリの管理人です。 現在ブレンド画像は DerivationGraph を使用して分割することは 出来ませんが、対応させることは可能だと思います。 若しくは、ブレンド画像自体のどの部分を使用するのかを設定する 関数があれば解決しそうですね・・・・ 現在少し忙しい状態が続いているので実装は少し先になってしまうと 思いますが、問題ないでしょうか?

Page: 1 |