gpt4 book ai didi

delphi - Delphi 2009中TBitmap绘制透明图像

转载 作者:行者123 更新时间:2023-12-03 15:53:33 40 4
gpt4 key购买 nike

在 TBitmap 对象上绘制半透明 PNG 图像时出现问题。

如果 TBitmap 的 HandleType 设置为 bmDDB,则 Canvas 将绘制为透明。但问题是它并不适用于所有类型的机器(例如:苹果计算机上的 Windows)。

当 TBitmap 的 HandleType 属性设置为 bmDIB 时, Canvas 背景将绘制为白色。

bmp.HandleType := bmDIB;

我尝试将画笔样式设置为 bsClear。但它以黑色绘制透明像素。

如何绘制保持透明度和平滑弯曲边缘的图像。

谢谢帕万。

最佳答案

当然可以在 Canvas 上绘制具有透明背景的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 .

关于delphi - Delphi 2009中TBitmap绘制透明图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728141/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com