WEB开发网
开发学院操作系统Windows Vista 深入了解图标,使用WIC对Windows Vista图标进行解... 阅读

深入了解图标,使用WIC对Windows Vista图标进行解码

 2008-10-24 17:35:27 来源:WEB开发网   
核心提示: 了解一般概念后,现在让我们来看一个具体的示例,深入了解图标,使用WIC对Windows Vista图标进行解码(2),我将重点介绍如何实现适用于 Windows 图标格式的备用解码器,选用图标格式的原因有两个,此外,图标格式也需要符合不同的显示功能,首先,Windows Vista &re

了解一般概念后,现在让我们来看一个具体的示例。我将重点介绍如何实现适用于 Windows 图标格式的备用解码器。选用图标格式的原因有两个。首先,Windows Vista ® 引入了对图标格式的更新,这本身就非常值得注意;稍后我将深入介绍这些更改。其次,Windows Vista附带的内置解码器实际上并不支持更新后的图标格式。

Windows 图标发展史

Windows 经历了多次蜕变,图标格式也同样有着自己的发展历史。在 16 位 Windows 操作系统刚刚问世时,仅支持设备相关位图 (DDB) 格式。这种位图指定了宽度和高度(以像素为单位),还指定了一个表,用于将像素值映射到特定设备调色板中的条目。设备不同,支持的分辨率和拥有的着色功能自然也不同,因此,要在不同设备之间移动这些位图并不容易。但由于 DDB 效率很高,所以至今仍然沿用它来执行某些操作。设备无关位图 (DIB) 格式的引入解决了 DDB 中存在的所有问题。这种位图本身附带颜色表,独立于任何特定设备。这样,位图的像素就会映射到位图的颜色表,此表使用红、绿、蓝 (RGB) 颜色值明确定义像素颜色。

当然,图标格式可以使用 DIB 格式,但存在一个问题。DIB 已经使用 Alpha 通道来表示透明度。当时的硬件也不允许对每个像素添加一个额外的字节,但 Alpha 通道却需要对每个像素使用一个额外的字节。这就需要改用其他解决方案。DIB 将在色位图之后附加一个额外的位图,此位图是一个有效的位掩码,用于标识色位图中的透明像素和不透明像素。通过使用 BitBlt 函数传输位块,可以轻松地使用布尔运算将位掩码中的位与目标设备表面相结合;而且此方法效率很高,这一点尤为重要。

图标格式本身包含多个 DIB 结构,每个结构都有与其相关的位掩码,可获得不同大小。这样,单个图标即可针对不同方案提供图像。例如,如果在桌面上显示图标,将使用 32×32 像素 DIB。如果在窗口的标题栏中显示图标,将使用 16×16 像素 DIB。此外,图标格式也需要符合不同的显示功能,因此还支持带有不同图标尺寸的颜色表的其他 DIB。

上一页  1 2 3 4 5 6 7  下一页

Tags:深入 了解 图标

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接