LCD 填充颜 {MOD}块问题

2019-07-20 10:54发布

有个函数  LCD_Color_Fill。。在指定区域内填充指定颜 {MOD}块。 为什么 只能填充 正方形的区域比如 200×200 的  如果填充 长方形区域 200×300 的话  就无法正常显示出来了。





问题 已经解决:


代码中的  color[i*width+j]    不知道为什么我写成   color[i*height+j] 了。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
幽灵骑士
2019-07-20 19:43
[mw_shl_code=c,true]//在指定区域内填充指定颜 {MOD}块 //(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1) //color:要填充的颜 {MOD} void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color) { u16 height,width; u16 i,j; width=ex-sx+1; //得到填充的宽度 height=ey-sy+1; //高度 for(i=0;i<height;i++) { LCD_SetCursor(sx,sy+i); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM for(j=0;j<width;j++)LCD->LCD_RAM=color[i*height+j];//写入数据 } } [/mw_shl_code] [mw_shl_code=c,true]//读取个某点的颜 {MOD}值 //x,y:坐标 //返回值:此点的颜 {MOD} u16 LCD_ReadPoint(u16 x,u16 y) { u16 t=0; LCD_SetCursor(x,y); while(t<0X1FFF) { if(LCD->LCD_REG&0x0001)break; t++; } return LCD->LCD_RAM; }[/mw_shl_code] 读取 200*300 区域的点数据。
[mw_shl_code=c,true] for(y=0;y<300;y++) { for(x=0;x<200;x++) { rg=LCD_ReadPoint(lcddev.width/2-150+x,lcddev.height/2-100+y); i++; } }[/mw_shl_code] 显示 读取的 数据 :     读取和显示200×200 的数据都正常。也试过 100×200 的也是不行。
 注:  rg 是个很大的数组  可以完全存的下 300×300 的数据/『内存大任性』
[mw_shl_code=c,true]LCD_Color_Fill(lcddev.width/2-150,lcddev.height/2-100,lcddev.width/2-150+299,lcddev.height/2-100+199,rg);[/mw_shl_code]

一周热门 更多>