我想在TImageList中加载具有透明背景的PNG,并在TMainMenu(通过TAction)中使用它.
但是,在Delphi中,背景只是黑色.PNG支持只有一半在Delphi中实现吗?
这家伙说它适合他,但有一个按钮而不是主菜单.
我的设置:
注意意外行为:
当用户更改ColorDepth属性的值时,DELPHI将丢失所有图像(仅在TIMAGELIST中的整个表单中).
该bug可以按需复制.丢失的图像可以从之前的DFM文件中恢复,来自'histoy'文件夹.
djs*_*oft 13
没有理由备份整个DFM文件.
在对您做某事之前,您ImageList应该导出图像:单击图像列表编辑器中的"导出"按钮,它会将所有图像保存到单个.BMP文件中.
更改属性后: ColorDepth = cd32Bit, DrawingStyle = dsTransparent
您应该单击"添加"按钮并选择先前导出的文件.然后,图像将在菜单和工具栏中以透明度绘制(至少在D2010上)......无需使用第三方组件.
我从Delphi 7 开始就使用TPngComponents.这为大多数delphi内置/第三方组件提供了非常好的png支持.Embarcadero购买了另一个众所周知的开源PNG支持组件,称为TPngImage,并在后来的Delphi版本中构建了Delphi的原生图形支持.因此,当我改为Delphi 2010时,我认为Delphi现在有本机支持并测试本机支持,但发现alpha支持不够好.
所以我再次使用了TPngComponents,它对大多数组件都有更好的支持,包括主菜单.我认为该软件包应该可用于DXE,并且修改有限.
编辑:感谢Uwe Raabe指出产品Codegear(现为Embarcadero)购买的是另一个组件TPngImage而不是TPngComponent.
以下是解决方案:http:
//www.aha-soft.com/faq/delphi-imagelist-png.htm小心:这将删除(没有任何添加通知TImageList中的所有图像),因此解决方案仅适用于那些只加载了少量图像.备份您的图像和DFM文件.
在我的情况下,我已超过100,所以我不是很有效率地逐个导出所有图像并以相同的顺序加载它们.
所以结论是Delphi XE尚未准备好使用透明的PNG文件(在TImageList中).我最好回到我原来的第三方PNG图书馆,或者只使用普通的BMP图像.
更新:
这是如何在Delphi 7下完成的:http://www.ic0de.org/showthread.php? 10477-TUT-Working-with-delphi-s-imagelist-and- transparency
| 归档时间: |
|
| 查看次数: |
16704 次 |
| 最近记录: |