char r,g,b;
int i=0;
int color;
for(y=0;y<480;y++)
{
for(x=0;x<800;x++)
{
r = bmp_buf[i++];
g = bmp_buf[i++];
b = bmp_buf[i++];
color = b | g << 8 | r << 16;
lcd_draw_color(x,y,color)
}
}
color = b | g << 8 | r << 16; RGB 加上透明度占了4个字节如果移位也是 4 8 12
为什么 就变成了 4 8 16了?
r,g,b 的设置范围是 00 - FF ,占一个字节,共 8个bit 0000 0000(00) 到 1111 1111(FF)
color 是 1111 1111 1111 1111 1111 1111
r g b
所以罗,r 左移 16个bit g左移 8个bit b不需要移
当然是 int color = b | g << 8 | r << 16;
private int GetCustomColor(Color color)
{
int nColor = color.ToArgb();
int blue = nColor & 255;
int green = nColor >> 8 & 255;
int red = nColor >> 16 & 255;
return Convert.ToInt32(blue << 16 | green << 8 | red);
}