当前位置: 代码迷 >> WinCE >> 屏幕的基础知识,该如何解决
  详细解决方案

屏幕的基础知识,该如何解决

热度:126   发布时间:2016-04-28 13:19:38.0
屏幕的基础知识
我的是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了。
  相关解决方案