VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - ANI文件格式
发表评论(0)作者:, 平台:, 阅读:15954, 日期:2000-03-17
ANI文件格式


ANI(APPlicedon Startins Hour Glass)文件是 MS-Windows的动画光标文件,其文件扩展名为“.ani”。它一般由四部分构成:文字说明区、信息区、时间控制区和数据区,即 ACONLIST块。anih块、rate块和 LIST块。

以下就是作为例子的文件内容(数据E)及ANI文件标准结构图(图):






1.从(0000-006D)是 Wnd0WS 95& NT ANI文件的文字说明区部分

如你想对你开发的ANI文件提供一点文字说明,并加入你的版权信息,且同时它们又要被ANI文件播放软件承认时,这是你唯一的选择。要是你觉得这样做很麻烦,或者没什么好写时,那你完全可以去掉本块中的全部内容,并将块的大小置为0。切记,“块识别码

‘ ACONLIST’”和标识“块的大小”这两部分,共计 12字节,绝对不能被更改、移动及删除,否则后果自负。

可能为了让文字说明信息系统化,在ACONLIST块内部包容了若干子块,本例中用到的两个分别是:INFOINAM块(提供本文件的解释说明)和IART块(用于插入版本信息)。说实在,诸位可以运用在 AVI文件中插入自定义块的方法,加入自己的自定义块,其结果只是ANI播放软件把它当作一个“JUNK”罢了。

0000-0003:多媒体文件识别码:RIFF

0004-0007;文件大小( 2052h字节)-8字节

0008- 000F: ACONLIST块识别码,它是文字说明区开始的标志

0010-0013:ACONLIST块的大小(5Ah字节)

0014-001B:INFOINAM块识别码,标志文件说明信息子块的开始

001C- 001F: INFOINAM块的大小( 20h字节)

0020-003F :文件说明信息子块的内容“Application startingHour Glass”

0040-0043:IART块识别码,标志版权说明信息于决的开始

0044-0047:IART块的大小(26h字节)

0048- 006D:版权说明信息于块的内容“Microsoft Corporation,Copyright 1995”

2.从(006E-0099)是 WindoWs 95& NT ANI文件的信息区部分

前面我们已见识过AVI文件的信息区部分,诸位是否觉得已够复杂了。说实在,那是我花了许久才找到的,只有两条数据流(一条图像,一条声音),且文件已足够的小了(就1MB左右)。不过ANI文件的信息区就不会有它那么”恐怖”了。到目前为止,我只发现了由“anih”作识别码,且信息区长度恒定为24h,36字节的唯一一种信息区,且结构与AVI文件的信息区有几分相似。

006E-0071: anih识别码,它是信息区开始的标志

0072-0075:anih块的大小(24字节)

0076-0079:可能是标志,不知怎么修改它,还是不改为好

007A-007D:本文件中包含的光标帧数。ANI文件在播放时所形成的动画效果,其实就是一张张的光标或图标图像按一定的顺序,绘制到屏幕上,并保留指定的时间(见“时间控制区”说明),这和AVI文件的帧播放原理是一样的。本文件共有10帧用像

007B-0081:定义从第一帧光标图像开始,播放到第几帧光标图像后重新开始。在一般情况下,AVI文件都要求播放软件播完全部图像后再重新开始(除非有一些其它的小企图,只需要播放开始的一部分帧图像)。就象本例定义为AH,即在播完全部的10帧图像后,再重新从第一帧图像开始播放0082-0091:未知,简单更改后对文件播放无影响

0092-0095:未知,可能是此文件在播放前需预读其中的多少帧图像作初始化

0096-0099:未知,可能是此文件中包含的数据流个数

3.从(009A-00C9)是 Windows 95& NT ANI文件的时间控制区部分

前面我们曾提到关于ANI文件播放,它是将每帧的光标或图标图像接一定的顺序,绘制到屏幕上,并保留指定的时间,从而达到动画效果。而它对每帧图像这一保留时间的控制。其实是一个烦琐的过程。它需要分别对每帧图像定一个时间,以一个长整数的形式表示,,并按光标或图标图像播放的顺序存放在本区域内。

009A- 009D;rate识别码,它是时间控制区开始的标志

009E-00A1:rate块的大小(28h字节)

00A2- 00A5:它对应第一帧图像显示后在屏幕上保留的时间

00A6-00A9:它对应第二帧图像显示后在屏幕上保留的时间

00C6-00C9:它对应第十帧图像显示后在屏幕上保留的时间

4.从( 00CA-2051)是 Wind0WS 95& NT Asq文件的数据区部分

ANI文件的数据区,以“块”形式存放着全部图像的数据,即它包含了一个 framicon子块和多个icon子块,它的形式很象AVI文件的数据块。framicon子块用于定义本文件的主要帧,也就是我们在 windows 95 &NT的文件管理器中见到的那张图像,到目前为止,我

见到的framicon子块都被作为动画光标的第一帧,而放在数据区的第一个子块的位置上;icon子块则用于定义本文件的其它图像帧。

00CA-00CD:LIST识别码,它是数据区开始的标志

00CE-00DI:LIST块的大小(1F80h字节)

00D2-00D99:framicon识别码,数据区中第一个子块的开始

00DA-00DD:framicon子块的大小(43Eh字节)

00DE-051B: framicon子块的内容,不难看出,这里包含了一个光标文件的完整内容(见光标文件的说明)。但它似乎与我们作为例子的文件内容不一样,其实它指一个包含多个光标图像的光标文件.

051C-051F:icon识别码,数据区中第二个子块的开始

0520-0523:icon子块的大小(2FEh字节)

0524- 0821: icon子块的内容

. .

. .

. .

1D4C-1D4F:icon识别码,数据区中第十个子块的开始

1D50-1D53:icon子块的大小(2FEh字节)

1D54-2051:icon子块的内容