2017-09-15 1 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를 수행하면 결과 이미지가 완전히 투명 해집니다. (내가 무엇을 놓쳤을까요?) –

관련 문제