位图文件分四部份数据块
1.位图文件头
BITMAPFILEHEADER
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //文件类型,对于位图格式,其值是'MB'19778, 由于字节存放次序问题的原故,实际为'BM'
DWORD bfSize; //文件总大小
WORD bfReserved1; //保留,置0
WORD bfReserved2; //保留,置0
DWORD bfOffBits; //位图数据偏移长度
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
2.位图信息头
BITMAPINFOHEADER
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //信息头大小,sizeof(BITMAPINFOHEADER)
LONG biWidth; //图片宽度
LONG biHeight; //图片高度
WORD biPlanes; //面数,置1
WORD biBitCount; //每一位像素占的位数,
DWORD biCompression; //压缩,0比表示不压缩.BI_RGB
DWORD biSizeImage; //图片大小,对24位来说,biWidth * biHeight * 3
LONG biXPelsPerMeter; //分辨率,每米多少个像素
LONG biYPelsPerMeter; //分辨率,每米多少个像素
DWORD biClrUsed; //用到的颜色数
DWORD biClrImportant; //重要的颜色
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
3.调色版
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved; //保留,置0
} RGBQUAD;
typedef RGBQUAD FAR* LPRGBQUAD;
4.位图数据
不同位数的数据格式不同,对24位位图来说,没有调色版,位图信息依次存放是BGR...
***********************************************************************************
另外两个数据结构,
//实际上OS/2的调色版,(1,4,8位)
typedef struct tagRGBTRIPLE // rgbt
{
BYTE rgbtBlue ; // blue level
BYTE rgbtGreen ; // green level
BYTE rgbtRed ; // red level
}
RGBTRIPLE ;
//位图信息,(位图信息头 + 调色版)
typedef struct