繁体   English   中英

TMainMenu 中的透明 PNG 图像(带有 TImageList)

[英]Transparent PNG image (with TImageList) in a TMainMenu

我想在 TImageList 中加载具有透明背景的 PNG,并在 TMainMenu 中使用它(通过 TAction)。
但是,在 Delphi 中,背景只是黑色。 在 Delphi 中,PNG 是否只支持一半?

家伙说这对他有用,但用一个按钮而不是主菜单。

我的设置:

  • 我的图像是每种颜色 8 位加上 8 位用于透明度通道(我也尝试使用 1 位用于透明度但仍然不起作用)。 该图像在任何其他程序中看起来都很好。
  • Delphi XE。
  • 在 TImageList 的编辑器中,“透明颜色”和“填充颜色”设置为“默认”并被禁用。

没有理由备份整个 DFM 文件。

在对ImageList进行操作之前,您应该导出图像:单击图像列表编辑器中的“导出”按钮,它将所有图像保存到单个.BMP文件中。

更改属性后: ColorDepth = cd32Bit, DrawingStyle = dsTransparent

您应该单击“添加”按钮和 select 您之前导出的文件。 然后,将在菜单和工具栏中以透明方式绘制图像(至少在 D2010 上)......无需使用 3rd 方组件。

  1. 为 TImageList 设置以下属性值:
  • 绘图样式:dsTransparent
  • 颜色深度:cd32Bit
  1. 在“应用程序”下的“项目设置”中设置“启用运行时主题”。

Delphi Rio 更新:

TImageList 必须有:

  • BkGColor = clNone
  • BlendColor = clNone,
  • 颜色深度 = cd32bit,
  • DrawingStyle = dsTransparent(或)dsNormal,
  • 蒙面=真。

可以从具有透明bkg 颜色的 PNG 加载图像。


注意:编辑 TImageList 的某些属性将删除(没有任何通知)列表中的所有现有图像。 首先备份您的图像。

自 Delphi 7 以来,我一直在使用TPngComponents 。它为大多数 delphi 内置/第三方组件提供了非常好的 png 支持。 Embarcadero 购买了另一个众所周知的开源 PNG 支持组件,称为 TPngImage,并在后来的 Delphi 版本中内置到 Delphi 的本机图形支持中。 所以当我更改为 Delphi 2010 时,我认为 Delphi 现在有原生支持并测试原生支持但发现 alpha 支持不够好。

所以我再次使用了 TPngComponents,它对大多数组件都有更好的支持,包括main menu 我认为 package 应该可以用于 DXE,但修改有限。

编辑:感谢 Uwe Raabe 指出 Codegear(现为 Embarcadero)购买的产品是另一个组件 TPngImage 而不是 TPngComponent。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM