描述:
小弟目前对bitmap的颜色表表示位图颜色不是很理解:
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;
按照上述说法,如果biBitCount = 16 时,颜色表应有多少个表项?
另外颜色表和位图数据是如何对应起来的?在以下几种情况
当biBitCount=1时, 8个像素占1个字节;
当biBitCount=4时, 2个像素占1个字节;
当biBitCount=8时, 1个像素占1个字节;
当biBitCount=16时,1个像素占2个字节;
当biBitCount=24时, 1个像素占3个字节;
有数据
00000000 00011111 00000000
在不同情况下如何与颜色表信息关联起来?
忘高手指点,不胜感激!!