65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows Vista 图标

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.78/5 (32投票s)

2006年5月4日

CPOL

3分钟阅读

viewsIcon

163003

downloadIcon

2645

描述了 Windows Vista 中 .ico 格式的变化,并解释了如何将 Vista 图标编译到您的应用程序中。

Images in Vista icon

Windows Vista 图标包含高分辨率 256x256 像素的图像。

引言

本文介绍了 Windows XP 和 Windows Vista 图标之间的基本区别,并解释了如何在您的应用程序中使用 Vista 图标。

Vista 图标

四年前,微软扩展了 .ico 格式,并允许在 .ico 文件中使用 32 位 RGBA 图像(带有 8 位 Alpha 通道)。这些图标被称为 Windows XP 图标,并且很容易通过它们平滑的反锯齿边缘来识别。

Windows Vista 的 Beta 1 和 Beta 2 表明微软将要对 .ico 格式进行另一次更改。当前 Vista 版本中的图标与 Windows XP 图标在两个方面有所不同

  • Vista 图标包含大的高分辨率 256x256 图像
  • 这些大的图像使用 PNG 压缩进行存储

PNG 压缩的使用是一个突破性的变化。Windows XP 及之前的版本只能使用图标中未压缩的图像。

图标格式之前允许使用 256x256 图像,那么为什么微软要引入 PNG 压缩呢?我们只能猜测,但由于包含所有 Vista 格式的未压缩图标占据超过 400kB 的空间,答案是显而易见的。

Windows Vista 资源管理器使用高分辨率图像并动态地将它们重新采样到所需的分辨率。

编译 Vista 图标的问题

如果您尝试使用 Visual Studio 资源编译器将 Vista 图标编译到应用程序资源中,该工具会中止并报错,拒绝接受 Vista 格式的图标。所有版本的 Visual Studio(包括 VS 2005)都报告了此错误。

如何使用该工具

本文随附的工具能够替换或将图标添加到已编译的可执行文件中。它具有简单的命令行界面,并且可以配置为在 Microsoft Visual Studio 中作为生成后步骤运行。

参数

ReplaceVistaIcon.exe executable.dll icon.ico [icon_ID [language_code]]

该命令会将 icon.ico 替换或添加到 executable.dll 中。如果您指定 icon_ID,图标将被替换,否则它将被添加到图标列表中。

实现

该工具不会直接修改可执行文件。相反,它使用 Win32 API 进行资源操作,并且可以在所有基于 NT 的系统下工作。应该没有兼容性问题,因为它链接了 C 运行时的静态版本。

该实现非常简单,该工具会

  • 读取和分析图标
  • 枚举可执行文件中的图标资源(图标资源实际上比其他类型的资源更复杂,因为它包含一个图标目录,该目录保存对图像的引用,以及实际的图像)
  • 可选地删除正在被替换的图标
  • 将新图标添加到可执行文件中

关注点

我在工具本身上使用了该工具,并且编译后的可执行文件已经包含一个 Vista 兼容的图标(图片上的那个)。

历史

  • 1.0 - 发布于 2006 年 5 月 4 日

结论

Vista 仍处于 Beta 阶段,微软很可能会在 Vista 发布时解决资源编译器的问题,从而使此工具过时。(无论如何,微软使用什么编译器来编译 Windows Vista?)

尽管如此,微软可能不会为其所有版本的开发环境发布补丁,并且有大量的第三方 Windows 编译器,因此即使在微软解决该问题之后,该工具也可能会找到其位置。

Windows Vista 提供了令人惊叹的视觉功能,而新的高分辨率图标是其不可分割的一部分。探索和利用 Vista 的新概念是一种令人兴奋的体验,特别是对于像我这样参与 图标制作软件 开发的人来说。

© . All rights reserved.