德尔福和48×48(或更大)的图像列表 – 是否有解决方法?
我正在获取系统图像列表(使用SHGetFileInfo和SHGFI_LARGEICON),添加两个我自己的图标并将其附加到TListView.
问题是如果用户的图标大小未设置为32×32(例如它设置为48×48),则Delphi7 TImageList会因“图像大小无效”错误而失败. 有没有人知道是否有可用的解决方法?我尝试过使用TPngImageList但它会导致其他问题. 此外,请注意我想保留图标的Alpha通道.正常的1位透明度是不够的,因为图标往往看起来很丑陋. 谢谢! 解决方法
我不知道TImageList可以容纳的图像大小有任何限制.听起来我的问题是你有不同大小的图标,你不能在同一图像列表中保存不同大小的图标.
如果您正在使用不同大小的图标,那么您将需要增大尺寸较小的图标.您必须使用位图在代码中构建它.使用纯透明Alpha通道填充位图,然后将较小的图标blt到位图的中心. 另一个选择是维护两个单独的图像列表,但如果你需要将图标绘制到相同的列表视图中,那么我认为这不会完成工作.我的猜测是你需要增长小图标. 对于alpha,您将需要自己创建图像列表句柄,因为D7中不存在ColorDepth属性.因此,香草D7 TImageList根本无法支持带alpha通道的图标. 您可以通过调用 这是一个48×48工具按钮的屏幕截图,带有带alpha透明度的32bpp图标: 确实,我在D2010中做到了这一点,但我的上述解决方法适用于D7 – 直到最近才使用D6.我只是展示这个以证明图像列表可以容纳48px图标.由于TImageList只是系统映像列表组件的包装器,我相信你所尝试的应该是完全可行的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |