[mw_shl_code=c,true]//在指定区域内填充指定颜色块
//(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为  ex-sx+1)*(ey-sy+1)
//color:要填充的颜色
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]//读取个某点的颜色值
//x,y:坐标
//返回值:此点的颜色
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]
|