程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 如何顯示位圖

如何顯示位圖

編輯:關於C語言

 

 

    位圖文件是分成4部分的。第一部分是位圖文件頭,它包括位圖文件名,位圖的大小和位圖數據離文件頭的偏移量。接下去的是位圖信息頭,它包括了位圖的許多信息,比如位圖的寬度,高度和位圖使用的顏色數。再後面是顏色表,它可能包含了2個或更多的RGBQUAD結構。最後面是位圖圖象的數據。

 

一.位圖結構如下:

---- 一、BMP文件結構

 

---- 1. BMP文件組成

---- BMP文件由文件頭、位圖信息頭、顏色信息和圖形數據四部分組成。

 

---- 2. BMP文件頭

---- BMP文件頭數據結構含有BMP文件的類型、文件大小和位圖起始位置等信息。

---- 其結構定義如下:

 

typedef struct tagBITMAPFILEHEADER

{

WORDbfType;   // 位圖文件的類型,必須為BM

DWORD   bfSize;   // 位圖文件的大小,以字節為單位

WORDbfReserved1;  // 位圖文件保留字,必須為0

WORDbfReserved2;  // 位圖文件保留字,必須為0

DWORD   bfOffBits; // 位圖數據的起始位置,以相對於位圖

// 文件頭的偏移量表示,以字節為單位

} BITMAPFILEHEADER;

 

---- 3. 位圖信息頭

 

BMP位圖信息頭數據用於說明位圖的尺寸等信息。

typedef struct tagBITMAPINFOHEADER{

   DWORD  biSize;   // 本結構所占用字節數

   LONGbiWidth;  // 位圖的寬度,以像素為單位

   LONGbiHeight; // 位圖的高度,以像素為單位

   WORD   biPlanes; // 目標設備的級別,必須為1

   WORD   biBitCount// 每個像素所需的位數,必須是1(雙色),

  // 4(16色),8(256色)或24(真彩色)之一

   DWORD  biCompression;   // 位圖壓縮類型,必須是 0(不壓縮),

  // 1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一

   DWORD  biSizeImage; // 位圖的大小,以字節為單位

   LONGbiXPelsPerMeter; // 位圖水平分辨率,每米像素數

   LONGbiYPelsPerMeter;  // 位圖垂直分辨率,每米像素數

   DWORD  biClrUsed;// 位圖實際使用的顏色表中的顏色數

   DWORD  biClrImportant;// 位圖顯示過程中重要的顏色數

} BITMAPINFOHEADER;

 

---- 4. 顏色表

 

    顏色表用於說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結構,定義一種顏色。RGBQUAD結構的定義如下:

 

typedef struct tagRGBQUAD {

BYTErgbBlue;// 藍色的亮度(值范圍為0-255)

BYTErgbGreen;   // 綠色的亮度(值范圍為0-255)

BYTErgbRed; // 紅色的亮度(值范圍為0-255)

BYTErgbReserved;// 保留,必須為0

} RGBQUAD;

顏色表中RGBQUAD結構數據的個數有biBitCount來確定:

當biBitCount=1,4,8時,分別有2,16,256個表項;

當biBitCount=24時,沒有顏色表項。

   位圖信息頭和顏色表組成位圖信息,BITMAPINFO結構定義如下:

typedef struct tagBITMAPINFO {

   BITMAPINFOHEADER bmiHeader;   // 位圖信息頭

   RGBQUAD  bmiColors[1];  // 顏色表

} BITMAPINFO;

 

---- 5. 位圖數據

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved