gpt4 book ai didi

delphi - 具有透明度的位图

转载 作者:行者123 更新时间:2023-12-02 10:50:43 25 4
gpt4 key购买 nike

带有代码


procedure TForm2.Button1Click(Sender: TObject);
var
oMeta: TMetaFile;
oBmp: TBitmap;
begin
Image1.Transparent := True;
Image1.Picture.LoadFromFile('D:\data\WMF.wmf');

oBmp := TBitmap.Create;
try
oMeta := TMetaFile(Image1.Picture.Graphic);
oBmp.SetSize(oMeta.Width, oMeta.Height);
oBmp.Canvas.Draw(0, 0, oMeta);
oBmp.SaveToFile('D:\data\WMF.bmp');
finally
oBmp.Free;
end;
end;

我显示 wmf 图像并创建 bmp 文件。创建了我用代码显示的 bmp 图像


procedure TForm2.Button2Click(Sender: TObject);
begin
Image1.Transparent := True;
Image1.Picture.LoadFromFile('D:\data\WMF.bmp');
end;

但图像显示时没有透明度。为什么?如何以透明方式显示此 bmp 图像?

TIA 致以最诚挚的问候布兰科

最佳答案

首先,您应该知道透明 BMP 非常罕见。因此,许多(大多数)位图查看器、编码器和解码器不支持透明位图。不过,还是有一些希望的。首先,许多位图都是 32 位的,尽管像素通常以 $00BBGGRR 格式存储。因此,每个“像素”的第一个字节未被使用,当然可以使用它作为不透明度值:$AABBGGRR。但这不仅仅是我个人的想法。大多数位图使用 version 3 bitmap header ,但是version 4 (和版本 5)实际上支持透明度数据。您只需指定红色、绿色、蓝色和 Alpha mask (例如分别为 $000000FF、$0000FF00、$00FF0000 和 $FF000000),然后就可以存储每个像素的红色、绿色、蓝色和 Alpha 强度。

不过,正如我所说,大多数位图查看器、编码器和解码器不支持透明位图。我认为 VCL 编码器、解码器和查看器 (TImage) 不会。

我会考虑使用 PNG 而不是 BMP。 PNG 位图图像格式以多种不同方式支持透明度。

关于delphi - 具有透明度的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798938/

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