1
私はビットマップとマスクを持っています(ビットマップもあります)。私はFireMonkeyのとデルファイでこれを行うにはどのように、マスクされたビットマップをキャンバスに描画する方法は?
(下図のように)マスクにビットマップを描画したいと思いますか?
私はビットマップとマスクを持っています(ビットマップもあります)。私はFireMonkeyのとデルファイでこれを行うにはどのように、マスクされたビットマップをキャンバスに描画する方法は?
(下図のように)マスクにビットマップを描画したいと思いますか?
使用TBitmap.CreateFromBitmapAndMask()
constructor CreateFromBitmapAndMask(const Bitmap, Mask: TBitmap);
ドキュメントは言う:
作成TBitmapのマスクにおける赤チャンネルの値に等しい各色 ピクセルのアルファチャンネルの値を有します。
、さらに:
ヒント:より良い結果のために、マスク用のグレースケール画像を使用しています。これは、緑、赤、青の同量の です。
ヒント:マスクとベースビットマップの寸法は同じでなければなりません。 は、そうでなければ新しいTBitmapのはのような簡単なテストでは0
に等しい寸法を持つことになります。
procedure TForm19.Button1Click(Sender: TObject);
var
bmp, msk: TBitmap;
begin
bmp := nil;
msk := nil;
try
bmp := TBitmap.Create;
msk := TBitmap.Create;
bmp.LoadFromFile('C:\tmp\Imgs\4.bmp');
msk.LoadFromFile('C:\tmp\Imgs\TestImage04.bmp');
Image1.Bitmap := bmp;
Image2.Bitmap := msk;
Image3.Bitmap.CreateFromBitmapAndMask(bmp, msk);
finally
bmp.Free;
msk.Free;
end;
end;
結果は次のようになります。トム、仕事
おかげで魔法のように ! –
@john大歓迎です!お役に立てて嬉しいです。 –
ただ一つの発言、私のマスクは透明+暗いです。私がCreateFromBitmapAndMaskを実行すると、結果のイメージは完全に透明になります。(何が欠けていましたか?) –