我想繪製一個源圖像(GR32 TBitmap32),該圖像在正常(TBitmap)圖像上包含一些完全透明且部分透明的像素,同時保留源圖像中的透明度。如何在TBitmap上透明地繪製TBitmap32?
我用這個:
BMP32.DrawTo(BMP.Canvas.Handle, 0, 0);
但圖像沒有透明地繪製。
代碼:
一切是非常基本的:我有一個背景位圖(BKG),其中我加載,在應用程序啓動時,形成圖像。 然後在程序中應用我從磁盤(透明的那個)加載第二個圖像,然後在背景上繪製它。
var Bkg: TBitmap;
procedure TfrmPhoto.FormCreate(Sender: TObject);
begin
Bkg:= LoadGraphEx(GetAppDir+ 'bkg.bmp'); { Load bitmap from file }
{
Bkg.Transparent:= TRUE;
Bkg.PixelFormat:= pf32bit;
Bkg.TransparentColor:= clPink;
}
end;
procedure TfrmPhoto.Apply2;
VAR
Loader: TBitmap;
BMP32: tbitmap32;
begin
BMP32:= TBitmap32.Create;
TRY
Loader:= TBitmap.Create;
TRY
Loader.LoadFromFile('c:\Transparent.BMP');
BMP32.Assign(Loader);
FINALLY
FreeAndNil(Loader);
END;
{ Mix images }
BMP32.DrawTo(Bkg.Canvas.Handle, 0, 0); <----- The problem is here
imgPreview.Picture.Assign(Bkg); { This is a TImage where I see the result }
FINALLY
FreeAndNil(BMP32);
END;
end;
請問SSCCE是否太多了? –
請編輯您的問題:添加您的Delphi版本的標籤,並顯示如何爲每個像素的32位股票啓用和設置透明模式TBitmap –
添加的源代碼。 LoadGraphEx可以用LoadFromFile('')替換。否則,該項目應該是可編譯的。 – Ampere