[英]Why are my transparent images used in a Delphi 2009 Ribbon not transparent on runtime?
[英]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.