日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 人文关怀 >内容正文

人文关怀

图标文件格式之单色图标

發(fā)布時(shí)間:2023/11/19 人文关怀 28 博士
生活随笔 收集整理的這篇文章主要介紹了 图标文件格式之单色图标 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

圖標(biāo)在電腦中是極為常見(jiàn)的一種圖片格式,例如文件夾圖標(biāo),軟件圖標(biāo),瀏覽器圖標(biāo),文件圖標(biāo)等等,充斥在電腦中的每一個(gè)角落.>ICON文件有一個(gè)固定的文件頭,它的數(shù)據(jù)結(jié)構(gòu)如下:>typedef struct {> WORD idReserved;> WORD idType;> WORD idCount;> ICONDIRENTRY idEntries[1];>} ICONDIR, *LPICONDIR;>其中idReserved為系統(tǒng)保留的字段必須為0>其中idType為資源類(lèi)型,1為圖標(biāo),2為光標(biāo)>其中idCount為ICON圖標(biāo)資源中包含多個(gè)少圖像組成>其中idEntries是一個(gè)指向ICONDIRENTRY結(jié)構(gòu)體的數(shù)據(jù)它的長(zhǎng)度是由idCount來(lái)決定的.>接下來(lái)我們看一看ICONDIRENTRY的結(jié)構(gòu)體是如何定義的吧!>typedef struct {> BYTE bWidth;> BYTE bHeight;> BYTE bColorCount;> BYTE bReserved;> WORD wPlanes;> WORD wBitCount;> DWORD dwBytesInRes;> DWORD dwImageOffset;>} ICONDIRENTRY, *LPICONDIRENTRY;>又是一長(zhǎng)串的結(jié)構(gòu)體...>*bWidth和bHeight表示了圖像的寬和高,起初,系統(tǒng)只支持1到255的大小,即2^8-1的大小,>但是從Widnows95開(kāi)始,可以支持到256的大小了.>*wBitCount和wPlanes用來(lái)描述圖像的顏色深度,對(duì)于單色圖標(biāo)來(lái)說(shuō),它們都是1.>*bReserved是系統(tǒng)保留字段為0>*dwBytesinRes表示圖像數(shù)據(jù)大小>*dwImageOffse表示圖像數(shù)據(jù)的位置即偏移地址.>*但是有個(gè)地方是值得注意的,bColorCount它被假定的認(rèn)為等于圖像的顏色數(shù)量,也就是說(shuō)它等于:>bColorCount = 1 << (wBitCount * wPlanes)>當(dāng)wBitCount * wPlanes >= 8時(shí),則bColorCount為0>*在現(xiàn)實(shí)情況中,很多人懶得填寫(xiě)bColorCount的值,即使是4色或16色的圖標(biāo),也把它設(shè)為0.從Windows XP開(kāi)始,>Windows會(huì)檢測(cè)這個(gè)常見(jiàn)的錯(cuò)誤,但是對(duì)于planar位圖來(lái)說(shuō),這個(gè)自動(dòng)糾錯(cuò)的機(jī)制還是有些問(wèn)題的,幸運(yùn)的是,幾乎沒(méi)有人使用planar位圖了.>但是你還是不應(yīng)該依賴于Windows提供的自動(dòng)糾錯(cuò)機(jī)制,而正確的填寫(xiě)bColorCount的值.錯(cuò)誤的bColorCount意味著,由于提供了錯(cuò)誤的顏色深度信息,>Windows可能會(huì)在ico文件中選擇一個(gè)不怎么理想的圖像.>*單色圖標(biāo)由兩個(gè)位圖組成,常稱為掩碼,分別被稱為AND和XOR,繪制圖標(biāo)分為兩個(gè)步驟:首先mask和screen作"與"操作,然后再做"異或"操作.>pixel = (screen AND mask) XOR image>為mask和image選擇適當(dāng)?shù)闹?可以覆蓋所有單色blt的操作.>mask image 結(jié)果 操作>0 0 (screen AND 0) XOR 0 = 0 黑色>0 1 (screen AND 0) XOR 1 = 1 白色>1 0 (screen AND 1) XOR 0 = screen 不變>1 1 (screen AND 1) XOR 1 = NOT screen 反色>*理論上說(shuō),mask指定了image的像素是否拷貝到屏幕上,mask中黑色的像素表示要將image中相應(yīng)的像素拷貝到屏幕上.>*mask和image位圖在物理上是保存為單個(gè)但是雙倍高度的DIB.首先是image位圖,然后是mask.由于DIB是自下而上的保存格式,>所以如果你要觀察一個(gè)位圖,那么mask在上面而image在下面).bmp文件格式使用的是數(shù)據(jù)坐標(biāo)系,也就是說(shuō)(0,0)在左下角,>bmp文件中的數(shù)據(jù)最開(kāi)始是最下載一行像素.>*按照格式,每個(gè)圖標(biāo)的圖像保存為BITMAPINFO結(jié)構(gòu)的形式,根據(jù)其中BITMAPINFOHEADER來(lái)決定有沒(méi)有調(diào)色板數(shù)據(jù),然后是image的像素?cái)?shù)據(jù)和mask的像素?cái)?shù)據(jù).>其中biCompression必須為BI_RGB,由于是雙倍高度的位圖,所以biWidth為圖像的寬度,biHeight為圖像高度的兩倍.>*對(duì)于圖標(biāo)的單色圖標(biāo)就先寫(xiě)到這里...>

總結(jié)

以上是生活随笔為你收集整理的图标文件格式之单色图标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

歡迎分享!

轉(zhuǎn)載請(qǐng)說(shuō)明來(lái)源于"生活随笔",并保留原作者的名字。

本文地址:图标文件格式之单色图标