Delphi “丑陋的”;残疾人士;菜单中的图像

Delphi “丑陋的”;残疾人士;菜单中的图像,delphi,menu,delphi-2010,vcl,menuitem,Delphi,Menu,Delphi 2010,Vcl,Menuitem,Delphi2010,Win32 VCL。我需要为我的应用程序创建一个外观最标准的主菜单。TMainMenu在所有Windows版本中都很好看,唯一的缺点是当它为Enabled=False的项目显示图像时 Delphi有一些奇怪的方法来构建禁用图像(带斜面的b/w拉伸,对我来说,它看起来像spew)。我想在VCL源代码中为该过程制作一个补丁,让菜单从同一个TImageList中选择禁用的图像,但我找不到它 它到底是存在的还是一些标准的windows API调用?你知道那个程序在哪里吗 当然,Ow

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

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

它到底是存在的还是一些标准的windows API调用?你知道那个程序在哪里吗

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

有一篇很好的文章描述了这个问题,并提供了解决方案代码,覆盖了TImageList DoDraw方法

这里的图片(链接)显示“之前”和“之后”


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

如果您可以提供PNG格式的图像,您可以从中使用TPngImageList。它有不同的选项来生成混合或灰度禁用图像。PNG格式允许您使用字母混合。

太棒了!我将覆盖TCustomImageList.DoDraw,禁用的映像将从存储映像32x16的后半部分复制。谢谢Roddy和Galfar链接断了。。。这就是为什么SO不再允许非现场资源作为问题或答案的基础。