屏幕的基础知识
我的是RGB 4.3寸屏幕,但是为什么24的话不对呢,一下16位却是对的。
- C/C++ code
/**************************************************************在LCD屏幕上指定坐标点画一个指定大小的图片**************************************************************/void Paint_Bmp(int x0,int y0,int w,int h,unsigned char bmp[]){ int x,y; U32 c; int p = 0; for( y = 0 ; y < h ; y++ ) { for( x = 0 ; x < w ; x++ ) { c = bmp[p] | (bmp[p+1]<<8) ; if ( ( (x0+x) < SCR_XSIZE_TFT) && ( (y0+y) < SCR_YSIZE_TFT) ) LCD_BUFFER[y0+y][x0+x] = c ; p = p + 2 ; } }}
我理解的是图像是由点的组成的,点都在数组里面了,但是 c = bmp[p] | (bmp[p+1]<<8) ;这句话我没理解,是怎么弄得?
怎么移位操作呢?
还有就是那个P+2又是什么意思呢?
[解决办法]
c = bmp[p] | (bmp[p+1]<<8)
看你的代码bmp是8位的数据类型,显示的时候是16位的,所以需要把两个8位的数据组合成16位的数据.
[解决办法]
unsigned int 的数据范围是0~65535,即其是16位数据类型
unsigned char的数据范围是0~255,即其是8位数据类型
[解决办法]
p = p + 2是指bmp数组中的数据流的编号,每次使用两个字节,当然要+2了。