【发布时间】:2013-12-29 12:50:24
【问题描述】:
当标准主菜单/弹出菜单包含图像时,我的字体高度存在问题。看起来像这样。
当没有图像时,没有如上所示的问题。主菜单使用TImageList,图像宽度/高度设置为16。
所以我想将图像尺寸保持在 16x16 并将其居中,以获得如下效果:
如何读取主菜单的字体高度并相应地调整TImageList 中的图像?我的一个想法是将图像从一个TImageList 复制到另一个具有更大图像宽度/高度的图像,但我仍然需要根据字体大小确定合适的大小。我该怎么做?
更新
我通过检查SystemParametersInfo - SPI_GETNONCLIENTMETRICS 值并使用iMenuHeight 值作为TImageList 宽度/高度解决了这个问题。由于更改宽度/高度后图像被删除,我将另一个复制到另一个TImageList。完全按照应有的方式工作。感谢大家提供最有帮助的答案。
更新 2
在进一步检查问题后,我标记为正确的解决方案提供了更好的结果,所以我改用那个解决方案。在 Win7 和 XP 上测试,似乎工作正常。
【问题讨论】:
-
哪个 Delphi 版本?哪个操作系统?坦率地说,德尔福 RTL 菜单代码很烂。在 XP 上可以工作,但在 Vista+ 上无望。我总是在 Vista+ 上用我自己的代码替换它,让系统绘制菜单,所以它是正确的。
-
我使用的是 2010 版本,操作系统是……所有这些。 XP、Vista、Win7 和 8。我已经可以通过调整图像大小来解决上述问题,但我很可能需要确定菜单使用的字体大小的方法。
标签: delphi user-interface fonts c++builder dpi