トップページ > 記事閲覧
マスク画像の拡縮に関しまして
名前:名無三 日時: 2024/02/14 21:19

お世話になっております。 マスク画像を用いた画像を切り抜いた形のゲージを描画しようとしており、おおむね達成はできているのですが 解像度に応じて画面サイズを変える都合拡縮ができればと思います。 ・BASEIMAGEを拡縮加工しGraphImageBltToMaskで転送してDrawMask ・ゲージを他スクリーンに書いてそれを拡縮表示させる のどちらかで実現できるかと思うのですが、前者の[BASEIMAGEを拡縮加工]はどのようにすれば達成できますでしょうか…? すいませんがご教示いただけますと幸いです。 以下適用中のコードです。 /*初期化時*/ BASEIMAGE MaskBase{}; CreateBaseImageToFile("GaugeOut.bmp", &MaskBase); //ここでMaskBaseの拡縮をしたい MaskHandle = MakeMask(MaskBase.Width, MaskBase.Height); GraphImageBltToMask(&MaskBase, 0, 0, MaskHandle); ReleaseBaseImage(&MaskBase); /*メインループ*/ SetUseMaskScreenFlag(TRUE); DrawMask(xp1, yp1, MaskHandle, DX_MASKTRANS_NONE); //ゲージ描画 SetUseMaskScreenFlag(FALSE);
メンテ

Page: 1 |

Re: マスク画像の拡縮に関しまして ( No.1 )
名前:管理人 日時:2024/02/16 01:06

BASEIMAGE 関連では拡縮する関数はありませんので、現状の機能で行う場合は以下のようにすることになります // 普通のグラフィックハンドルとして読み込み int GrHandle = LoadGraph( "GaugeOut.bmp" ); // 拡大後のサイズの『描画対象にできるグラフィックハンドル』を作成 int Screen = MakeScreen( 拡大後の幅, 拡大後の高さ ); // 『描画対象にできるグラフィックハンドル』に拡大して描画 SetDrawScreen( Screen ); DrawExtendGraph( 0, 0, 拡大後の幅, 拡大後の高さ, GrHandle, FALSE ); // BASEIMAGE に拡大描画結果を取り込み BASEIMAGE MaskBase; CreateXRGB8ColorBaseImage( 拡大後の幅, 拡大後の高さ, &MaskBase ); GetDrawScreenBaseImage( 0, 0, 拡大後の幅, 拡大後の高さ, &MaskBase ); // マスクハンドルに転送 MaskHandle = MakeMask(MaskBase.Width, MaskBase.Height); GraphImageBltToMask(&MaskBase, 0, 0, MaskHandle); ReleaseBaseImage(&MaskBase); ただ、マスクの処理は重いので、処理負荷が軽い GraphBlend を使用したマスク処理の方がお勧めです ( 画像が小さい場合は上記の処理でも問題ないと思います )
メンテ
Re: マスク画像の拡縮に関しまして ( No.2 )
名前:名無三(解決) 日時:2024/02/18 08:48

ありがとうございます。あすいません、確認遅れました。拡大宿所を行う関数がない点承知しました。 マスク画像が大きい為、提案いただいたGraphBlendのDX_GRAPH_BLEND_RGBA_SELECT_MIXでマスク画像のアルファ値を取ってくる形で対応しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存