转载:https://blog.csdn.net/augusdi/article/details/6402377
typedef struct tagBITMAP { LONG bmType; //必需为0 LONG bmWidth; //位图的宽度(以像素为单位) LONG bmHeight; //位图的高度(以像素为单位) /*指定每条光栅所占字节数。此值必须取偶数, 因为图形设备接口(GDI)默认为一个位图的位值组成一个2字节的整数数组。*/ LONG bmWidthBytes; WORD bmPlanes; // 位图调色板颜色数 WORD bmBitsPixel; // 一个点在每个调色板上接近的颜色位数 LPVOID bmBits; // 指向存储像素阵列的数组 } BITMAP;
bmWidthBytes:BitMap结构中的bmWidthBytes总算搞懂了,其实很简单:一行像素所占的字节数,一行像素的存储必须按word对齐,所以该值必须为2的倍数。所以计算方式中应体现出向字对齐来,即以16位为一划分。bmWidthBytes=((bitsPerLine+15)/16)*2,其中bitsPerLine=bmWidth*bmBitsPixel。一切搞定。