簡體   English   中英

TBitmap在Delphi 2009中繪制透明圖像

[英]TBitmap drawing transparent image in Delphi 2009

在TBitmap對象上繪制半透明PNG圖像時出現問題。

如果TBitmap的HandleType設置為bmDDB,則畫布將繪制為透明。 但問題是它不適用於所有類型的機器(例如:蘋果計算機上的Windows)。

當TBitmap的HandleType屬性設置為bmDIB時,畫布背景將繪制為白色。

bmp.HandleType := bmDIB;

我嘗試將Brush樣式設置為bsClear。 但它用黑色繪制透明像素。

如何繪制圖像以保持其透明度和平滑的曲線邊緣。

謝謝帕萬。

當然可以將具有透明背景的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM