- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图标文件的数据结构之研究
这几天因为编写一个图标编辑程序,研究了一下图标的数据结构,颇有一些心得,写出 来与各位兄弟共享。(笔者注:以下所说的图标均为调色板模式的图标,真彩图标会特别注 明)
一、从图标的显示原理说起 每个图标都是由两个单独的位图组成的。如果该图标是屏蔽背景色的话,那么,第一个 位图是由黑色背景(相关的颜色位全为 0)与彩色图标图案组成的,该位图将与当前屏幕显 示通过异或操作(XOR)结合起来,故称其为XOR位图;第二个位图是由白色背景(相关的颜 色位全为1)与黑色图标图案(相关的颜色位全为0)组成的,该位图将与当前屏幕显示通过 与操作(AND)结合起来,故称其为AND位图。因此,图标的显示是通过两个步骤完成的: 1.当前屏幕显示与AND位图通过AND操作结合起来; 2.当前屏幕显示与XOR位图通过XOR操作结合起来。 大家知道,1与任何数值AND操作的结果将维持原数值,而0与任何数值AND操作的结果则 是0,因此在步骤1中,AND位图中的白色(1)与屏幕显示经过AND操作后被原色彩屏蔽,而黑 色(0)则将原色彩屏蔽。步骤1结束后,屏幕上将留下一个黑色的图标图案。在随后的步骤 2中,由于0与任何数值异或的结果都将是原数值,因此,XOR位图与屏幕显示经过异或操作后, 位图和屏幕中的黑色部分都将被各自对应的彩色部分屏蔽。步骤2结束后,一个形状不规则的 图标图案就出现在屏幕上了,这就是图标显示的原理。
二、图标的图形 图标的图形,实际上就是位图格式的图片,是一个标准的位图格式。Windows只要从BMP 信息头中获取信息就足够了,它据以解释在其后出现的数据应该如何处理。如果是调色板模 式,其后的数据包含有调色板和像素点颜色索引,如果是真彩色,其后的数据直接就是像素 点的 RGB 颜色值。 而位图文件是由文件头、BMP 信息头、调色板、数据区(又称位图点阵)等几个部分组 成的。知道了这个情况,我们可以简单地把上面叙述的图标图形结构理解为位图信息。这样, 我们就有可能根本不需要真的去画一幅图,而只需要对关键数据进行程序填充就可以了,所 编写的代码,直接按图标格式的要求,可把一个只要尺寸不大于255×255像素的任意位图, 封装成标准格式的图标(真实的位图宽高尺寸保持不变,所以可以做出最大255×255的图标 来)。
三、图标的数据结构 图标文件的数据结构可分为6部分,其数据结构如下: ----------------------------------------------------------------------- 顺号 名称 长度(单位:字节) 说明 ----------------------------------------------------------------------- 1 文件头 6 2 图象信息块 16 有多少个图像,则信息块也有多少个 3 BMP 信息头 40 4 XOR 位图调色板 16色=64,256色=1024 真彩图标从此开始像素点的 RGB 值 5 XOR 位图 以调色板的索引值形式存放 6 AND位图 ----------------------------------------------------------------------- 说明: 1.上表中的3-6部分合称图像数据块,其中5、6部分又合称为图像数据区(也称位图点阵) 2.不论何种规格的图标,其1-3部分的字节长度是固定的。 3.请注意第 2部分的图象信息块的说明,“如果有多少个图像”是什么意思呢?原来,在一 个图标文件中,有可能存放几个图像(windows图标最多可有8个图像),但每个图像都有 自己的调色板、XOR 位图和 AND 位图,且它们的图像大小也可能不相同。以16色有3个图 像为例,其数据结构如下: ----------------------------------------------------------------- 顺号 名称 长度 说明 ----------------------------------------------------------------- 1 文件头 6 2 图象1的图象信息块 16 3 图象2的图象信息块 16 4 图象3的图象信息块 16 5 图象1的图象数据块 不定 其中BMP信息头和调色板固定为40和64字节 6 图象2的图象数据块 不定 同上 7 图象3的
文档评论(0)