以下代码可实现在ministm32开发板上的TTF lcd上绘制网格;
在“ILI93xx.h”文件中加入
//绘制网格线
void lcd_Grids(u16 x1,u16 y1,u16 HSpace,u16 VSpace,u8 NumOfRows,u8 NumOfColumns,u16 BorderColor,u8 span);
void lcd_line(u16 x1, u16 y1, u16 x2, u16 y2,u8 Span); //画实线或虚线
在“ILI93xx.c”文件中加入
///////////////////////////////////
//
//网格线
//
///////////////////////////////////
void lcd_Grids(u16 x1,u16 y1,u16 HSpace,u16 VSpace,u8 NumOfRows,u8 NumOfColumns,u16 BorderColor,u8 span)
{
u16 xsta,ysta,xend,yend;
u8 i;
  OINT_COLOR=BorderColor; //设定边框的颜色
//绘制水平线
for(i=0;i<NumOfColumns;i++)
{
xsta=x1;
ysta=y1+VSpace*i;
xend=x1+HSpace*(NumOfRows-1);
yend=y1+VSpace*i;
//LCD_DrawLine(xsta,ysta,xend,yend);
lcd_line(xsta,ysta,xend,yend,span);
}
//绘制垂直线
for(i=0;i<NumOfRows;i++)
{
xsta=x1+HSpace*i;
ysta=y1;
xend=x1+HSpace*i;
yend=y1+VSpace*(NumOfColumns-1);
//LCD_DrawLine(xsta,ysta,xend,yend);
lcd_line(xsta,ysta,xend,yend,span);
}
}
//画实线或虚线
//x1,y1:起点坐标
//x2,y2:终点坐标
//Span:点间距
void lcd_line(u16 x1, u16 y1, u16 x2, u16 y2,u8 Span)
{
u16 t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //计算坐标增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //设置单步方向
else if(delta_x==0)incx=0;//垂直线
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平线
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//画线输出
{
if((uRow<=x2)&(uCol<=y2))
{
LCD_DrawPoint(uRow,uCol);//画点
}
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=(incx+Span);
}
if(yerr>distance)
{
yerr-=distance;
uCol+=(incy+Span);
}
}
}
|