發(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é),他們分別是
2.圖片入口 接下來(lái)是wCount個(gè)“圖片入口”數(shù)據(jù)。每個(gè)“圖片入口”數(shù)據(jù)結(jié)構(gòu)如下:
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ù)位圖的顏色深度可以是4位16色、8位256色、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ù)位圖可以用如下辦法: 先利用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::GetPixelAddress和CImage::Draw等函數(shù)從源圖復(fù)制圖像數(shù)據(jù)到該位圖。 接著將該位圖保存到一個(gè)臨時(shí)位圖文件中。從該文件中讀取 |
上一篇:谷歌Gmail郵箱如何打開(kāi)pop3/imap
下一篇:啥是bt下載