首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2012-03-14 
屏幕的基础知识我的是RGB 4.3寸屏幕,但是为什么24的话不对呢,一下16位却是对的。C/C++ code/**************

屏幕的基础知识
我的是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了。

热点排行