win7系統(tǒng)下載
當(dāng)前位置: 首頁(yè) > 硬件軟件教程 > 詳細(xì)頁(yè)面

圖標(biāo)文件格式總結(jié)大全

發(fā)布時(shí)間:2024-04-14 文章來(lái)源:深度系統(tǒng)下載 瀏覽:

圖標(biāo)文件(*.ico)由圖標(biāo)文件頭、圖片入口數(shù)據(jù)和圖片數(shù)據(jù)三個(gè)部分組成,這三個(gè)部分的具體結(jié)構(gòu)如下:

1.圖標(biāo)文件頭

圖標(biāo)文件頭包括三個(gè)部分6個(gè)字節(jié),他們分別是

數(shù)據(jù)類(lèi)型

字節(jié)

含義

說(shuō)明

WORD

2

保留字段(wReserved

必須0

WORD

2

文件類(lèi)型(wType

必須1

WORD

2

圖片數(shù)量(wCount

表示該圖標(biāo)文件包含多少個(gè)圖片

2.圖片入口

接下來(lái)是wCount個(gè)“圖片入口”數(shù)據(jù)。每個(gè)“圖片入口”數(shù)據(jù)結(jié)構(gòu)如下:

數(shù)據(jù)類(lèi)型

字節(jié)

含義

說(shuō)明

BYTE

1

圖像寬度(bWidth

單位:像素。256px的圖片該值為0

BYTE

1

圖像高度(bHeight

同上

BYTE

1

顏色數(shù)(bClrCount

不重要

BYTE

1

保留字段(bReserved

必須為0

WORD

2

平面數(shù)(wPlanes

一般為1

WORD

2

比特?cái)?shù)(wBitCount

顏色深度,取值4位、8位、24位和32

DWORD

4

數(shù)據(jù)大。dwImageSize

對(duì)應(yīng)圖片數(shù)據(jù)占用的字節(jié)數(shù)

DWORD

4

數(shù)據(jù)位置(dwOffset

對(duì)應(yīng)圖片數(shù)據(jù)在文件中的位置

3.圖片數(shù)據(jù)

對(duì)于256X256像素的圖片,在文件中存儲(chǔ)的格式是PNG,只要將整個(gè)PNG文件寫(xiě)在數(shù)據(jù)區(qū)就可以了,對(duì)應(yīng)前面的圖片入口的數(shù)據(jù)大。dwImageSize)也是PNG文件的大小。但是XP操作系統(tǒng)不認(rèn)該圖片。

對(duì)于其他圖片,該區(qū)域存放了一個(gè)目標(biāo)顏色深度(wBitCount)的數(shù)據(jù)位圖后面跟一個(gè)對(duì)應(yīng)的遮罩位圖。系統(tǒng)在繪制圖標(biāo)時(shí)會(huì)先將遮罩位圖與目標(biāo)設(shè)備“與”拷貝(SRCAND),然后在把數(shù)據(jù)位圖與目標(biāo)設(shè)備“異或”拷貝(SRCINVERT)。

數(shù)據(jù)位圖的顏色深度可以是416色、8256色、24位真彩色或32位帶Alpha通道。需要注意的是就算是32位帶Alpha通道的位圖也是需要遮罩位圖的。

遮罩位圖是一個(gè)1位顏色深度的2值位圖,有圖像的位置填0,透明的位置填1。

數(shù)據(jù)位圖的結(jié)構(gòu)與普通位圖結(jié)構(gòu)基本相似,但是缺少14位的位圖文件頭。具體包含位圖信息頭、顏色表(只有4位和8位的位圖才會(huì)有,4位的位圖顏色表長(zhǎng)度為16X4=64字節(jié),8位的位圖顏色表長(zhǎng)度為256X4=1024字節(jié))和數(shù)據(jù)區(qū)。

位圖信息頭結(jié)構(gòu)如下:

數(shù)據(jù)類(lèi)型

字節(jié)

含義

說(shuō)明

DWORD

4

結(jié)構(gòu)大小(biSize

固定為40

LONG

4

圖像寬度(biWidth

單位:像素

LONG

4

圖像高度(biHeight

單位:像素。由于還有遮罩因此要X2

WORD

2

平面數(shù)(biPlanes

一般為1

WORD

2

比特?cái)?shù)(biBitCount

顏色深度取值4位、8位、24位和32

DWORD

4

壓縮(biCompression

一般為0

DWORD

4

數(shù)據(jù)大小(biSizeImage


LONG

4

分辨率(biXPelsPerMeter


LONG

4

分辨率(biYPelsPerMeter


DWORD

4

使用顏色(biClrUsed


DWORD

4

重要顏色(biClrImportant


獲取數(shù)據(jù)位圖可以用如下辦法:

先利用CImage類(lèi)創(chuàng)建一個(gè)目標(biāo)大小和顏色深度的位圖。注意:4位和8位的位圖需要設(shè)置顏色表,不然無(wú)法從源圖片復(fù)制數(shù)據(jù),顏色表可以采用固定的數(shù)據(jù)。32位位圖需要開(kāi)啟Alpha通道,不然無(wú)法復(fù)制Alpha通道的數(shù)據(jù)。

然后利用CImage::GetDC、CImage::ReleaseDC、CImage::GetPixelAddressCImage::Draw等函數(shù)從源圖復(fù)制圖像數(shù)據(jù)到該位圖。

接著將該位圖保存到一個(gè)臨時(shí)位圖文件中。從該文件中讀取

本文章關(guān)鍵詞: 圖標(biāo)文件格式 圖標(biāo)文件 
當(dāng)前原文鏈接:http://czecheden.com/soft/soft-49710.html