ソース画像の透明度を維持しながら、通常の (TBitmap) 画像に完全に透明なピクセルと部分的に透明なピクセルを含むソース画像 (GR32 TBitmap32) を描画しようとしています。
私はこれを使用します:
BMP32.DrawTo(BMP.Canvas.Handle, 0, 0);
ただし、画像は透過的に描画されません。
コード:
すべてが非常に基本的です: アプリケーションの起動時にイメージをロードする背景ビットマップ (Bkg) があります。次に、手順 Apply で、ディスクから 2 番目の画像 (透明度のある画像) を読み込み、背景の上に描画します。
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;