用于NotifyIcon的图标的格式和大小

ble*_*jzz 8 notifyicon windows-vista windows-7 winforms

我找不到任何有关系统托盘图标的信息,它们应该具有多大的尺寸以获得最佳质量.我应该使用多种尺寸(16x16,32x32,64x64)吗?

我目前正在使用16x16 .ICO图标,它们看起来很糟糕.

Dav*_*nan 8

它们是小图标(ICON_SMALL).您可以通过以下方式找到尺寸:

GetSystemMetrics(SM_CXSMICON)
Run Code Online (Sandbox Code Playgroud)

我认为假设它们是正方形是相当安全的,但如果你是偏执狂,那么你可以随时询问SM_CYSMICON.

在我的Windows 7机器上,它们的大小是16px.但是如果你使用字体缩放,那么它们会更大.对于125%的字体缩放(例如大字体),您需要一个20px的图标.

如果您手头没有20px版本,那么最好的方法是动态生成一个并将16px版本放在新的20px图标的中间.

更新

NOTIFYICONDATA使用LoadIconMetric传递的推荐文档LIM_SMALL等同于我在上面概述的方法.

但是,该NOTIFYICONDATA主题还说要使用仅包含16px和32px版本图标的图标资源.这个建议是假的,因为,正如任何人都可以看到的那样,大字体下的通知图标是20px图标,并且LoadIconMetric将具有从32到20的比例.我建议提供16,20,24,32px版本.

在XP LoadIconMetric上不存在,因此您需要实现回退例程.