GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bmp); 获取 HBITMAP 句柄包含的位图信息结构,不包含像素数据内容。
typedef struct tagBITMAP {
LONG bmType; // 位图类型,必须为 0
LONG bmWidth; // 位图宽度(以像素为单位)
LONG bmHeight; // 位图高度(以像素为单位)
LONG bmWidthBytes; // 每行字节数
WORD bmPlanes; // 颜色平面数
WORD bmBitsPixel; // 每个像素占用的位数
LPVOID bmBits; // 指向像素数据的指针
} BITMAP;
======================================= BMP 文件的构成 =====================================================
》》第一部分: 文件头 《《
位图文件头
typedef struct tagBITMAPFILEHEADER {
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
}BITMAPFILEHEADER;
》》第二部分:位图信息头《《
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; // 结构体的大小(以字节为单位)LONG biWidth; // 位图的宽度(以像素为单位)LONG biHeight; // 位图的高度(以像素为单位)WORD biPlanes; // 颜色平面数(必须为 1)WORD biBitCount; // 每个像素占用的位数DWORD biCompression; // 压缩类型DWORD biSizeImage; // 图像数据的大小(以字节为单位)LONG biXPelsPerMeter; // 水平分辨率(每米的像素数)LONG biYPelsPerMeter; // 垂直分辨率(每米的像素数)DWORD biClrUsed; // 使用的颜色数DWORD biClrImportant; // 重要的颜色数
} BITMAPINFOHEADER;
》》第三部分:像素数据 Bits《《
阵 列 数 据