关于原子哥TFT屏LCD_FILL填充函数的疑问

2019-07-20 21:34发布

[mw_shl_code=applescript,true]//在指定区域内填充单个颜 {MOD}
//(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1)   
//color:要填充的颜 {MOD}
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color)
{         
        u16 i,j;
        u16 xlen=0;
        u16 temp;
        if((lcddev.id==0X6804)&&(lcddev.dir==1))        //6804横屏的时候特殊处理  
        {
                temp=sx;
                sx=sy;
                sy=lcddev.width-ex-1;          
                ex=ey;
                ey=lcddev.width-temp-1;
                lcddev.dir=0;         
                lcddev.setxcmd=0X2A;
                lcddev.setycmd=0X2B;                                  
                LCD_Fill(sx,sy,ex,ey,color);  
                lcddev.dir=1;         
                  lcddev.setxcmd=0X2B;
                lcddev.setycmd=0X2A;           
        }else
        {
                xlen=ex-sx+1;         
                for(i=sy;i<=ey;i++)
                {
                         LCD_SetCursor(sx,i);                                      //设置光标位置
                        LCD_WriteRAM_Prepare();                             //开始写入GRAM          
                        for(j=0;j<xlen;j++)TFTLCD->LCD_RAM=color;        //显示颜 {MOD}             
                }
        }         
} [/mw_shl_code]这里我觉得还可以改进一下,因为ILI9341支持RAM指针自增,所以无需每次都设置坐标,只需要设置X和Y轴的起始和结束坐标就行。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。