【发布时间】:2013-07-10 23:24:54
【问题描述】:
我有一个 TBitmap,它包含带有 alpha 通道的半透明图像(在这个例子中,我从 TPngImage 得到它)。
var
SourceBitmap: TBitmap;
PngImage: TPngImage;
begin
PngImage := TPngImage.Create();
SourceBitmap := TBitmap.Create();
try
PngImage.LoadFromFile('ImgSmallTransparent.png');
SourceBitmap.Assign(PngImage);
SourceBitmap.SaveToFile('TestIn.bmp');
imgSource.Picture.Assign(SourceBitmap);
finally
PngImage.Free();
SourceBitmap.Free();
end;
当我将此 TBitmap 保存到 TestIn.bmp 文件并使用任何图像查看器打开它时,我可以看到透明度。但是当我将它分配给 TImage 时,透明像素显示为黑色(TImage 有Transparent = True)。
如何在 TImage 上正确显示透明的 TBitmap?
【问题讨论】:
-
请复制粘贴部分真实代码。
-
如果所有的底层 wincontrols 都没有 Doublebuffered=true 并且图像未设置为透明,那么一切都按我的预期工作。