这是当时媳妇对我博客的评价,哈哈: 小雨 顶~ 这个最最有用!! 真是好人啊好人[emot]5[/emot]
BITMAPFILEHEADER
BITMAPFILEHEADER结构包含关于类型,大小,布局设备无关的位图信息。
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
成员
bfType
声明文件类型,必须是BM。
bfSize
声明位图文件的大小,以字节为单位。
bfReserved1
保留,必须为0。
bfReserved2
保留,必须为0。
bfOffBits
声明偏移量,从BITMAPFILEHEADER结构开始到位图数据,以字节为单位。
备注
在设备无关文件中,BITMAPINFOHEADER结构紧随其后。
BITMAPINFOHEADER
BITMAPINFOHEADER结构包含设备无关位图的大小以及色彩格式的信息。
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
成员
biSize
声明这个结构体所需要的字节数。
biWidth
声明位图的宽,以像素为单位。
biHeight
声明位图的高,以像素为单位。如果biHeight是正数,位图是一个自下而上的设备无关位图,起点在左下角。如果biHeight是负数,位图是一个自上而下的设备无关位图,起点在左上角。
如果biHeight是负数,指示一个自上而下的设备无关位图,biCompression就必须为BI_RGB或者BI_BITFIELDS。自上而下的设备无关位图不能被压缩。
biPlanes
为目标装置声明平面数,这个值必须是1。
biBitCount
声明每像素位数。BITMAPINFOHEADER的成员biBitCount确定了定义每一个像素需要的位数,以及位图所需颜色的最大值。这个成员必须是以下的值:
Value Meaning
0 JPEG或者PNG格式声明每像素位数
1 位图是单色的,包含两个颜色信息,位图数组中的每一位代表一个像素。如果这一位是0,那么这个点的颜色就是调色板中第一个RGBQUAD结构所定义的颜色。如果这一位是1,那么这个点的颜色就是调色板中第二个GBQUAD结构所定义的颜色。
4 位图最多有16种颜色。调色板数组中有16个元素。位图中的每一个像素由一个4位的索引指向调色板。举个例子,位图的第一个字节是0x1F,这个字节代表两个像素,第一个像素颜色是调色板中的第二个RGBQUAD结构所定义的颜色,第二个像素颜色是调色板中的第十六个RGBQUAD结构所定义的颜色。
8 位图最多有256种颜色。调色板中有256个元素。每一个字节代表一个颜色。
16 位图有2^16种颜色。如果biCompression为BI_RGB,则没有调色板。每两个字节代表一个像素。每一个颜色分量中,使用5位分别表示红绿蓝的相对强度。低5位表示蓝色,然后的5表示绿色,在5位表示红色。最高位没有使用。
24 位图最多有2^24种颜色。没有调色板。位图数组中每三个字节代表一个像素的红绿蓝相对强度。
biCompression
BI_RGB
biSizeImage
声明图像的大小,以字节为单位。如果是BI_RGB位图,可能是0。
biXPelsPerMeter
声明横向分辨率,以像素每米为单位。
biYPelsPerMeter
声明纵向分辨率,以像素每米为单位。
biClrUsed
一般为0。
biClrImportant
声明显示这个位图需要多少种颜色,如果是0,则需要所有颜色。
RGBQUAD
RGBQUAD结构描述红绿蓝相对亮度
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
成员
rgbBlue
声明蓝色强度
rgbGreen
声明绿色强度
rgbRed
声明红色强度
rgbReserved
保留,必须是0