我正在开发一个Delphi程序,它会在“托盘”上显示一个图标。我正在“艰难的方式”(使用Shell_NotifyIcon api等,而不是组件,这里的原因除外)。它工作正常,但有时似乎某些系统中的图标有点“模糊”。现在,我已经尝试使用16x16 bmp,32x32等。似乎系统将其缩小到所需的大小,但结果根据操作系统版本(或者可能还有别的东西)而有所不同....
您是否有任何关于使用ShellI上的Shell_NotifyIcon从托盘中提取和显示BMP的最佳尺寸和颜色深度的经验?
答案 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