丑陋的“残疾人” TMainMenu 的图像

发布于 2024-09-06 16:16:42 字数 328 浏览 7 评论 0原文

德尔福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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹤舞 2024-09-13 16:16:42

Galfar 的巢穴有一篇很棒的文章blog 描述了该问题,并提供了解决方法的代码,重写了 TImageList DoDraw 方法。

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

alt text

我认为这几乎与所有德尔福版本。

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'.

alt text

I think this relates to pretty much all Delphi versions.

蓦然回首 2024-09-13 16:16:42

如果您可以提供 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文