我注意到我的应用程序向Windows托盘发送的图标大小为16x16像素--而我的Vista PC有一个两倍宽的任务栏,显示的图标大小为18x18。我的应用程序图标上的大小调整效果看起来很糟糕。我该如何询问Windows图标应该是什么大小?
- 编辑**
我动态地生成了一个带有像素字体文本覆盖的图标,动态地生成一堆图标大小似乎很浪费,所以最好避免用所有"可能"的大小来构建一个图标(我甚至不确定这些是什么)。
- GetSystemMetrics(
SM_CXSMICON
)**返回16-不正确的值。
- GetSystemMetrics(
- 获取主题背景内容矩形**也没有帮助。
3条答案
按热度按时间qkf9rpyu1#
创建多种格式的图标,让Windows选择它想要的。
Here's the Wikipedia article on the .ico format.
如果您确实需要知道,带有SM_CXICON或SM_CYICON参数的GetSystemMetrics将告诉您Windows想要加载的宽度和高度。
qaxu7uf22#
马克的核心答案是正确的:创建多种格式的图标,让Windows选择合适的格式。不要忘记为HighDPI方案创建32 x32和64 x64的图标。
但是SM_CXICON/SM_CYICON不一定返回任务栏中使用的图标大小,任务栏根据图标大小选择合适的图标大小(这在Windows7中要重要得多)。
只要提供适当大小的图标,你应该没问题。
hgqdbh6s3#
您最好的选择可能是GetThemeBackgroundContentRect将
TBN_BACKGROUND
作为iPartId传递给托盘通知后台。GetThemeBackgroundContentRect应该返回当前主题定义的大小,该大小可以用于绘制而不与父元素的边框重叠。如果我没有阅读错的话,这应该是允许的最大通知图标大小,并且可能是正在使用的大小。
使用多个DPI设置进行测试可能是判断是否返回正确值的最简单方法。