Конечно, можно рисовать bmDIB
растровое изображение с прозрачным фоном на холсте:
procedure TForm1.FormPaint(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.PixelFormat := pf32bit;
Bmp.HandleType := bmDIB;
Bmp.Width := 700;
Bmp.Height := 400;
Bmp.Transparent := TRUE;
Bmp.TransparentColor := clMaroon;
with Bmp.Canvas do begin
Brush.Color := clMaroon;
FillRect(Rect(0, 0, Bmp.Width, Bmp.Height));
Brush.Color := clBlue;
FillRect(Rect(42, 42, 200, 300));
end;
Canvas.Draw(12, 12, Bmp);
finally
Bmp.Free;
end;
end;
Обратите внимание, что сначала все растровое изображение заполняется цветом, установленным как TransparentColor
.
Но для большего контроля и скорости вы должны искать решение, которое не зависит от GDI (которое включает в себя возможности графической карты и драйвера), что-то вроде Graphics32 .