使用Borland C ++ Builder 2009我注意到在替换TImagelist中的图像时,alpha通道数据会以某种方式被破坏。
TIcon *Icon = new TIcon() ;
for (int x = 0 ; x < OS_Specific_count ; x++)
{
OS_xx_ImageList->GetIcon(x, Icon) ;
Use_ImageList->ReplaceIcon(x, Icon) ;
}
delete Icon ;
问题也在另一个Q(TImageList - True color + alpha channel vs. 8-bit (256 colors))中描述(+屏幕),但我现在正试图通过更具体的问题缩小范围。
在帮助文件中浏览TIcon时,我注意到了一个只读属性:SupportsPartialTransparency
。
在我的案例中似乎是false
,我想知道这不是解决这个问题的关键吗? Icon->Transparent = true
未将SupportsPartialTransparency
设置为true!
我想知道我能做些什么来确保TIcon实例正确“获取”并“替换”alpha通道信息?
ImageLists在设计时创建并具有默认属性(未更改)并包含通过IDE导入的16x16图标。导入的图标包含Alpha通道信息。
答案 0 :(得分:-1)
我只使用TPngImageList,它与TImageList兼容。此外,设计时编辑器更灵活:您需要将.ico转换为.png。
免费且广泛使用,例如:https://github.com/TurboPack。自从没有透明度的头疼:) BTW,将图标保持为PNG更合适,您可以在其他开发工具和平台上使用它们。