TMainMenu丑陋的“禁用”图像

时间:2010-06-25 09:45:58

标签: delphi menu delphi-2010 vcl menuitem

Delphi 2010,Win32 VCL。我需要以最标准的外观为我的应用程序创建一个主菜单。 TMainMenu在所有Windows版本中看起来都不错,唯一不好的是当它显示具有Enabled = False的项目的图像时。

Delphi有一些奇怪的方法来构建禁用的图像(使用斜面进行b / w挤出,对我而言,它看起来像是喷出)。我想在VCL源代码中为该过程制作一个补丁,让菜单从同一个TImageList中选择禁用的图像,但我找不到它。

它是否存在或者是一些标准的Windows API调用?你知道那个程序在哪里吗?

当然OwnerDraw风格可以修复所有这些,但我想要更快一点的解决方案。

2 个答案:

答案 0 :(得分:22)

Galfar's Lair blog上有一篇很好的文章描述了这个问题,并提供了解决方法的代码,覆盖了TImageList DoDraw方法。

这是显示'之前'和'之后'的图片(链接)。

alt text

我认为这与几乎所有Delphi版本有关。

答案 1 :(得分:4)

如果您可以将图像提供为PNG,则可以使用PngComponents中的TPngImageList。它有不同的选项来制作混合或灰度残疾图像。 PNG格式允许您使用alphablending。