最佳图标尺寸,用于在托盘中显示

时间:2011-11-11 21:41:20

标签: delphi winapi shell system-tray

我正在开发一个Delphi程序,它会在“托盘”上显示一个图标。我正在“艰难的方式”(使用Shell_NotifyIcon api等,而不是组件,这里的原因除外)。它工作正常,但有时似乎某些系统中的图标有点“模糊”。现在,我已经尝试使用16x16 bmp,32x32等。似乎系统将其缩小到所需的大小,但结果根据操作系统版本(或者可能还有别的东西)而有所不同....

您是否有任何关于使用ShellI上的Shell_NotifyIcon从托盘中提取和显示BMP的最佳尺寸和颜色深度的经验?

3 个答案:

答案 0 :(得分:12)

您应该使用具有部分透明度的32bpp图标以获得最佳效果。

图标使用较小的系统尺寸。通过GetSystemMetrics调用SM_CXSMICON来获取此信息。如果使用字体缩放,则可以是20px,而不是更常见的16px。我从来没有找到这个事实的MS文档,但你可以通过反复试验自己验证它。并不是一种幸福的事态,但事实就是如此。

更新:TOndrej指出LoadIconMetric的文档默认了通知区域图标是小图标大小。我不明白为什么这些信息不包含在通知图标中。

答案 1 :(得分:7)

您应该包括32x32和16x16图标,并在运行时加载适当的图标:

  

通知区域图标应该具有高DPI感知能力。一个应用程序   应该提供16x16像素图标和32x32图标   资源文件,然后使用LoadIconMetric来确保正确   图标已加载并适当缩放。

(来源:MSDN

答案 2 :(得分:0)

建议将单个*.ico文件用于应用图标。 *.ico文件可以存储不同大小的图标,例如16,32,256等。您可以将不同的图像文件转换为ico格式的在线here

对于托盘图标16x16或32x32 ico适合。

图标的官方msdn指南:icons in Windows