编辑: 笨蛋爱傻瓜悦 2019-07-06
1.

制造原理 调色板模式的ico文件的数据结构,可分为

6 部分: 1.ICON文件头(6字节) 2.ICON图象信息块(16字节) 3.BMP信息头(40字节) 4.调色板(16色为64字节,256色为1024字节) 5.XOR位图 6.AND位图 而调色板模式的bmp文件的数据结构可分为

4 部分: 1.BMP文件头(14字节) 2.BMP信息头(40字节) 3.调色板(16色为64字节,256色为1024字节) 4.XOR位图 分析可知,ico图标与bmp位图有三个相同的部分(注:真彩图标与真彩位图的数据结构 均没有调色板部分,所以是两个相同的部分),而且这三个部分是最重要的部分.因此,我 们只要去掉 bmp位图的 BMP文件头,再加上ICON文件头、ICON图象信息块和AND位图,就可 以轻松制作出255*255象素以内的任何规格的图标了.然而……且慢,有一点却是很不轻松 的:如果你想制作背景透明(屏蔽背景色)的图标,那么你还需要对 XOR位图的数据动大手 术,更不轻松的是,AND 位图的数据也必须符合相应的要求,这是相当困难的;

而制作有背 景色的图标的话,XOR 位图部分我们可以原封不动,AND 位图全是 0,只要计算出它的长度 来即可添加到 XOR位图数据的后面,这是很容易实现的.所以,下面我所讲的,都是制作有 背景色的图标. ICON文件头结构很简单,一共只有3个数据共6个字节,我们要给其中的 资源类型 和 图象个数 2个数据均赋值为 1. ICON 图象信息块有 7个数据共16字节,有5个数据要赋值:图标宽度、图标高度、颜色 计数、图像数据块的长度、图象数据块相对于文件头部的偏移量.要赋值的 5个数据中,图 象数据块相对于文件头部的偏移量是固定的,图像数据块的长度需要计算,其余 3个数据可 从BMP 信息头中获得资料. AND 位图的长度必须根据从 BMP 信息头中获得的有关数据计算. 此外,还要更改 BMP 信息头中的 2个数据:一个是图象长度数据(要加上 AND 位图的 长度),另一个是图像高度数据(这只要简单地将原数据*2即可). OK,一切都准备好了,万事俱备,只欠东风,下面就让东风劲吹吧. 2.编程 新建一个窗体,添加一个公用对话框,两个图片框,三个按纽. 窗体与图片框的ScaleMode属性均设为3,其中 Picture1 的Autosize 属性设为 Ture. 按纽的属性设置: Command1:Caption=打开图片 Command2:Caption=数据处理,Enabled=False Command3:Caption=保存图标,Enabled=False 代码如下: Option Explicit Dim pDAT() As Byte '

源图数据 Dim aDAT() As Byte '

AND位图数据 Dim iDAT() As Byte '

icon文件头和图象信息块数据 Private Sub Command2_Click() On Error GoTo

100 Dim d As Long, c As Long Dim aLength As Long '

AND位图长度 aLength =

4 * (pDAT(4) \

32 + Abs((pDAT(4) Mod 32) >

0)) * pDAT(8) '

计算AND位图的长度 ReDim aDAT(aLength - 1) As Byte ReDim iDAT(21) As Byte '

给icon文件头和 icon图象信息块的元素赋值 iDAT(2) =

1 '

资源类型 iDAT(4) =

1 '

图像个数 iDAT(6) = pDAT(4) '

图像宽 iDAT(7) = pDAT(8) '

图像高 iDAT(8) =

16 * Abs(pDAT(14) = 4) iDAT(18) =

22 '

图象数据块相对于文件头部的偏移量 '

更改BMP信息头中的图像高度数据 d =

2 * pDAT(8) Select Case Len(Hex(d)) Case 1, 2: pDAT(8) = d Case 3, 4: pDAT(9) = d \ 256: pDAT(8) = d And

255 End Select '

更改BMP信息头中的图象长度数据 c = pDAT(21): d = pDAT(20) + c *

256 + pDAT(22) *

65536 + aLength Select Case Len(Hex(d)) Case 1, 2: pDAT(20) = d Case 3, 4: pDAT(21) = d \ 256: pDAT(20) = d And

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题