2017-09-15 3 views

答えて

4

使用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; 

結果は次のようになります。トム、仕事

enter image description here

+0

おかげで魔法のように ! –

+0

@john大歓迎です!お役に立てて嬉しいです。 –

+0

ただ一つの発言、私のマスクは透明+暗いです。私がCreateFromBitmapAndMaskを実行すると、結果のイメージは完全に透明になります。(何が欠けていましたか?) –

関連する問題