1.
RGB565
RGB565使用16位表示一个 像素 ,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下: 高字节 低字节 R R R R R G G G G G G B B B B B 可以组合使用屏蔽字和移位操作来得到RGB各分量的值: #define RGB565_MASK_RED 0xF800 #define RGB565_MASK_GREEN 0x07E0 #define RGB565_MASK_BLUE 0x001F R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31 G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31
2.
RGB24
RGB24使用24位来表示一个 像素 ,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE 数据结构 来操作一个像素,它的定义为: typedef struct tagRGBTRIPLE { BYTE rgbtBlue; // 蓝色分量 BYTE rgbtGreen; // 绿色分量 BYTE rgbtRed; // 红色分量 } RGBTRIPLE;
3. RGB24 转换为 RGB565
unsigned short rgb24_2_rgb565(unsigned short r, unsigned short g, unsigned short b)
{
unsigned short ret;
ret = (r << 8)&0xf800 | (g << 3)&0x07e0 | (b >> 3);
return ret;
}
{
unsigned short ret;
ret = (r << 8)&0xf800 | (g << 3)&0x07e0 | (b >> 3);
return ret;
}