Delphi 2009中的PNG图像列表和图像
发布时间:2020-12-15 09:21:55 所属栏目:大数据 来源:网络整理
导读:D2009为图像和图像列表引入了PNG支持. 然而… 我有一个包含带alpha的png图像的图像列表.我想使用TImage将其中一个放在表单上.我如何做到这一点并使图像很好地合成? 作为问题的一个例子我面对下面的代码无法正常工作,并产生显示的效果: ImageList.GetBitmap
D2009为图像和图像列表引入了PNG支持.
然而… 我有一个包含带alpha的png图像的图像列表.我想使用TImage将其中一个放在表单上.我如何做到这一点并使图像很好地合成? 作为问题的一个例子我面对下面的代码无法正常工作,并产生显示的效果: ImageList.GetBitmap(index,Image1.Picture.Bitmap); (来源: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那么漂亮. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |