BITMAPINFO結構詳解

2021-06-12 10:56:56 字數 1385 閱讀 6938

bitmapinfo結構定義了windows裝置無關位圖(dib)的度量和顏色資訊
typedef struct tagbitmapinfo  bitmapinfo;

位圖資訊頭bitmapinfoheader,也是乙個結構體,其定義如下: 

typedef struct tagbitmapinfoheader bitmapinfoheader; 

這個結構的長度是固定的,為40個位元組(long為32位整數),各個成員的說明如下: 

bisize       //

指定這個結構的長度,為40。 

biwidth      //

指定圖象的寬度,單位是象素。

biheight     //

指定圖象的高度,單位是象素。

biplanes     //

必須是1,不用考慮。

bibitcount    //

指定表示顏色時要用到的位數,常用的值為1(黑白二色圖), 4(16色圖), 8(256色), 24(真彩色圖)(新的.bmp格式支援32位色)。

bicompression //

指定位圖是否壓縮,有效的值為bi_rgb,bi_rle8,bi_rle4,bi_bitfields(都是一些windows定義好的常量)。

要說明的是,windows點陣圖可以採用rle4,和rle8的壓縮格式,但用的不多。我們今後所討論的只有第一種不壓縮的情況,即bicompression為bi_rgb的情況。 

bisizeimage     //

指定實際的點陣圖資料占用的位元組數,其實也可以從以下的公式中計算出來: 

bisizeimage=biwidth』 × biheight 

要注意的是:

上述公式中的biwidth』必須是4的整倍數(所以不是biwidth,而是biwidth』,表示大於或等於biwidth的,最接近4的整倍數。

舉個例子,如果biwidth=240,則biwidth』=240;如果biwidth=241,biwidth』=244)。 

如果bicompression為bi_rgb,則該項可能為零 

bixpelspermeter        //

指定目標裝置的水平解析度,單位是每公尺的象素個數,關於解析度的概念。 

biypelspermeter       //

指定目標裝置的垂直解析度,單位同上。 

biclrused        //

指定本圖象實際用到的顏色數,如果該值為零,則用到的顏色數為2bibitcount。 

biclrimportant          //

指定本圖象中重要的顏色數,如果該值為零,則認為所有的顏色都是重要的。

SCROLLINFO結構詳解

在剛開始使用scrollinfo結構時感覺很不順手,尤其其中的成員fmask理解不太深刻,經過查詢資料才理解一二。在使用滾動條功能時,如果要設定它的範圍和位置可以用以前的函式,例如 setscrollrange setscrollpos getscrollrange getscrollpos 等,但...

PES結構詳解

pes是packetized elementary stream的簡稱,是將原始es流打包後形成的,再將pes經過不同的打包方式可以組成mpeg program stream 和 mpeg transport stream,即ps流和ts流。pes的組成結構如圖,包括6個位元組的包頭字段,加上3個位...

struct socket 結構詳解

使用者使用socket系統呼叫編寫應用程式時,通過乙個數字來表示乙個socket,所有的操作都在該數字上進行,這個數字稱為套接字描述符。在系統呼叫 的實現函式裡,這個數字就會被對映成乙個表示socket的結構體,該結構體儲存了該socket的所有屬性和資料。在核心的協議中實現中,關於表示 socke...