發布時間:2024-04-14 文章來源:深度系統下載 瀏覽:
| 圖標文件(*.ico)由圖標文件頭、圖片入口數據和圖片數據三個部分組成,這三個部分的具體結構如下: 1.圖標文件頭 圖標文件頭包括三個部分6個字節,他們分別是
2.圖片入口 接下來是wCount個“圖片入口”數據。每個“圖片入口”數據結構如下:
3.圖片數據 對于256X256像素的圖片,在文件中存儲的格式是PNG,只要將整個PNG文件寫在數據區就可以了,對應前面的圖片入口的數據大小(dwImageSize)也是PNG文件的大小。但是XP操作系統不認該圖片。 對于其他圖片,該區域存放了一個目標顏色深度(wBitCount)的數據位圖后面跟一個對應的遮罩位圖。系統在繪制圖標時會先將遮罩位圖與目標設備“與”拷貝(SRCAND),然后在把數據位圖與目標設備“異或”拷貝(SRCINVERT)。 數據位圖的顏色深度可以是4位16色、8位256色、24位真彩色或32位帶Alpha通道。需要注意的是就算是32位帶Alpha通道的位圖也是需要遮罩位圖的。 遮罩位圖是一個1位顏色深度的2值位圖,有圖像的位置填0,透明的位置填1。 數據位圖的結構與普通位圖結構基本相似,但是缺少14位的位圖文件頭。具體包含位圖信息頭、顏色表(只有4位和8位的位圖才會有,4位的位圖顏色表長度為16X4=64字節,8位的位圖顏色表長度為256X4=1024字節)和數據區。 位圖信息頭結構如下:
獲取數據位圖可以用如下辦法: 先利用CImage類創建一個目標大小和顏色深度的位圖。注意:4位和8位的位圖需要設置顏色表,不然無法從源圖片復制數據,顏色表可以采用固定的數據。32位位圖需要開啟Alpha通道,不然無法復制Alpha通道的數據。 然后利用CImage::GetDC、CImage::ReleaseDC、CImage::GetPixelAddress和CImage::Draw等函數從源圖復制圖像數據到該位圖。 接著將該位圖保存到一個臨時位圖文件中。從該文件中讀取 |
下一篇:啥是bt下載