微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Delphi 2009中的PNG图像列表和图像

D2009为图像和图像列表引入了PNG支持.

然而…

我有一个包含带alpha的png图像的图像列表.我想使用TImage将其中一个放在表单上.我如何做到这一点并使图像很好地合成?

作为问题的一个例子我面对下面的代码无法正常工作,并产生显示效果

ImageList.GetBitmap(index,Image1.Picture.Bitmap);

alt text


(来源:clip2net.com)

再解释一下:

在表单上删除timage,并在设计时使用Picture属性加载带alpha的PNG文件.请注意它是如何在表单上以完全透明的方式正确合成的.

现在,在设计时,添加第二个空的timage,添加一个timagelist,并将相同的PNG添加到图像列表中.如何将timageList中的PNG分配给第二个timage,并使其看起来与第一个相同?

解决方法

根据我的研究,我发现timageList将图像存储为TBitmaps,因此alpha信息在存储时丢失,并且使用timageList的当前实现无法实现您所需的功能.

更新:

稍微进行一些实验并使用下面的代码,我可以使用下面的代码进行透明化.

ImageList1.ColorDepth := cd32Bit;
Image2.Transparent := True;
Image2.Canvas.Pen.Style := psClear;
Image2.Canvas.Rectangle(0,Image2.Width+1,Image2.Height+1);
ImageList1.Draw(Image2.Canvas,0);

但它看起来并不像装载的png那么漂亮.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐