我有一个Windows应用程序,将运行在Windows XP和更新(即Vista/7)。根据Vista UI指南,标准尺寸是16x16、32x32、48x48、256x256 (XP标准尺寸不包括256x256图标)。除了这些尺寸,我还有96x96和128x128(还可以创建更多)。

我应该包括哪些图标大小?shell将实际使用“非标准”大小,还是我将简单地膨胀我的应用程序?


当前回答

不是96x96,而是64x64。我通常使用:

16 -状态/标题栏按钮 32 -桌面图标 48 -文件夹视图 64/128 -附加尺寸

256在XP上也能很好地工作,然而,旧的资源编译器有时会抱怨“内存不足”错误。

其他回答

(Windows 8/10的更新答案)

在新的Windows设计指南中查看完整的指南和尺寸列表:https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-app-assets#asset-types

仍然包含以下大小的.ICO文件,以支持遗留体验:

16 x16 24 x24 32 x32 48 x48 256 x256

在Windows 10的情况下,这是不完全准确的,事实上没有一个在stackoverflow上的答案是,我发现这一点,当我试图使用像素艺术作为图标时,它被重新缩放,当它不应该(在这种情况下很容易看到,因为插值和平滑窗口),甚至你我使用了这篇文章的大小。

所以我做了一个应用程序,并做了所有DPI设置的工作,看这里: Windows 10所有图标分辨率的所有DPI设置 你也可以用我的应用程序来创建图标,还可以用平滑的最近邻插值,这是我所见过的任何糟糕的编辑器都做不到的。

如果你只想要决心: 16、20、24、28、30、31、32、40、42、47、48、56、60、63、84、256 你应该使用所有的PNG图标,你放在这些图标旁边的任何东西都不会显示出来。请看我的帖子为什么。

这份官方的微软Windows应用程序开发指南说:

应用程序至少应该有:16x16、24x24、32x32、48x48和256x256。

以下是ICO文件中包含的一些程序及其大小:

Application Icon 16 20 24 32 40 48 60 64 72 80 96 256
Google Chrome 106
IntelliJ IDEA 2022.2.3
MS PowerToys 0.63.0
MS Paint 11.2208.6.0
MS Task Manager 10.0
MS Word 2021
MS Visual Studio 2022

我们可以用ImageMagick从PNG等文件创建一个不同大小的ICO文件,如下所示:

./magick my-source-image.png -background transparent -define icon:auto-resize="16,24,32,48,64,256" C:/Users/Hello/Desktop/result.ico

笔记

没有应用程序包含128的大小 256大小为PNG格式;其他的是ICO MS是微软的缩写 图标是用这个工具从程序.exe文件中提取的 你可以保存上面的图标,并自己用ImageMagick检查它们,就像这样: ./magick识别“C:/Users/Hello/Desktop/result.ico”

在Windows 7中使用8、16、20、24、32、40、48、64、96、128和256像素(PNG格式为256)的图标进行测试后:

100%分辨率:资源管理器使用16、40、48和256。Windows照片查看器使用96。Paint使用256。 在125%分辨率时:资源管理器使用20,40和256。Windows照片查看器使用96。Paint使用256。 在150%分辨率时:资源管理器使用24、48和256。Windows照片查看器使用96。Paint使用256。 在200%分辨率时:Explorer使用40,64,96和256。Windows照片查看器使用128。Paint使用256。

所以8,32从未被使用过(32对我来说很奇怪),128只有在dpi非常高的屏幕上才被Windows照片查看器使用,也就是说几乎从未被使用过。

这意味着你的图标至少应该提供16,48和256的Windows 7。为了支持高分辨率的新屏幕,您应该提供16、20、24、40、48、64、96和256。对于Windows 7,所有图片都可以使用PNG压缩,但为了向后兼容Windows XP, 16到48不应该压缩。

我花了些时间详细检查了一下。我创建了一个图标,其图像大小为16、24、32、40、48、64、96、128和256。然后我检查了显示的图像。这些都是在正常的96dpi下完成的。如果使用更大的DPI,可能会使用更大的大小(在Windows 7中只检查了一点)。

Windows XP:

Explorer视图: 详细信息/列表 图标:32 Tiles / Thumbnails: 48 右键单击->属性/选择一个新图标:32 快速入门区:16 桌面:32

Windows 7:

Explorer视图: 详细信息/列表/小符号:16 所有其他选项:256(如果需要,可以调整大小) 右键单击->属性/选择一个新图标:32 固定到任务栏:32 Right-click-menu: 16 桌面: 小符号:32 介质符号:48 大符号:256(如果需要,可以调整大小) 使用Ctrl+鼠标滚轮缩放:16,32,48,256

Windows运行时:(从这里)

主平铺:150x150, 310x150(宽版) 小标志:30x30 徽章(锁屏):24x24,单色 Splashscreen: 620 x300 存储:50×50

因此,结果是:Windows XP使用了16、32和48个大小的图标,而Windows 7(可能还有Vista)也使用了256个大小的图标。所有其他中间图标大小被忽略(它们可能在我没有检查的某些区域使用)。


我还检查了Windows 7中图标大小缺失的情况:

缺失的大小被生成(显然)。对于大小为16、32和48的情况,如果缺少一个,则首选降级。因此,如果我们有大小为16和48的图标,32图标是由48图标创建的。如果没有其他可用的大小,256图标只用于这些!因此,如果图标的大小为16和256,其他大小将从16图标放大!

此外,如果256图标不存在,则使用(可能生成的)48图标,但不再调整大小。所以我们有一个(可能很大的)空白区域,中间有48图标。

注意,XP系统默认的桌面图标大小是32x32,而Windows 7是48x48。 因此,对于Windows 7来说,48图标是相对重要的。否则,它将从一个较小的图标放大,这可能看起来相当难看。


只是关于Windows XP兼容性的一个注意事项:如果您重用图标作为窗口图标,那么请注意,如果您使用压缩的256个图标,则可能导致应用程序崩溃。解决方案是要么不压缩图标,要么创建第二个没有(压缩的)256图标的版本。更多信息请看这里。