丑陋的“残疾人” TMainMenu 的图像
德尔福2010,Win32 VCL。我需要为我的应用程序创建一个具有最标准外观的主菜单。 TMainMenu 在所有 Windows 版本中看起来都不错,唯一的缺点是当它显示 Enabled=False 的项目的图像时。
Delphi 有一些奇怪的方法来构建禁用图像(带有斜角的黑白挤压,对我来说它看起来像喷水)。我想在 VCL 源代码中为该过程打一个补丁,并让菜单从同一个 TImageList 中选择禁用的图像,但我找不到它。
它是否存在或者是一些标准的 Windows API 调用?您知道该程序位于哪里吗?
当然 OwnerDraw 风格可以解决所有这些问题,但我想要更快的解决方案。
Delphi 2010, Win32 VCL. I need to create a main menu for my application with the most standard look. TMainMenu looks nice in all Windows versions, the only bad thing is when it displaying images for items with Enabled=False.
Delphi has some strange method for building that disabled images (b/w extrusion with bevels, for me it looks like spew). I want to make a patch for that procedure in VCL sources and let menu to select disabled images from the same TImageList, but I can't find it.
Is it exists at all or it is some standard windows API call? Do you know where is that procedure located?
Sure OwnerDraw style can fix all this but I want a bit faster solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Galfar 的巢穴有一篇很棒的文章blog 描述了该问题,并提供了解决方法的代码,重写了 TImageList DoDraw 方法。
这是显示“之前”和“之后”的图片(链接)。
我认为这几乎与所有德尔福版本。
There's a great post on Galfar's Lair blog which describes the problem, and has code for a workaround, overriding the TImageList DoDraw method.
Here's the pic (linked) showing the 'before' and 'after'.
I think this relates to pretty much all Delphi versions.
如果您可以提供 PNG 格式的图像,则可以使用 PngComponents 中的 TPngImageList。它有不同的选项来制作混合或灰度禁用图像。 PNG 格式允许您使用字母混合。
If you can provide your images as PNG you can use TPngImageList from PngComponents. It has different options to make a blended or grayscaled disabled image. The PNG format allows you to make use of alphablending.