/******************* 画点函数 **************************
参数:
Xpos:X轴坐标
Ypos:Y轴坐标
Color:像素点颜色
********************************************************/
void LCD_Draw_Point(u16 Xpos, u16 Ypos, u16 Color)
{
//int i;
LCD_ILI9486_CMD(0x2A); //发送0x2A命令,设置X轴坐标
LCD_ILI9486_Parameter((Xpos -4& 0xff00) >> 8); //发送X轴起始坐标的高8位
LCD_ILI9486_Parameter((Xpos -4& 0x00ff)); //发送X轴起始坐标的低8位
LCD_ILI9486_Parameter((Xpos +4& 0xff00) >> 8); //发送X轴结束坐标的高8位
LCD_ILI9486_Parameter((Xpos +4& 0x00ff)); //发送X轴结束坐标的低8位
LCD_ILI9486_CMD(0x2B); //发送0x2B命令,设置Y轴坐标
LCD_ILI9486_Parameter((Ypos -4& 0xff00) >> 8); //发送Y轴起始坐标的高8位
LCD_ILI9486_Parameter((Ypos -4& 0x00ff)); //发送Y轴起始坐标的低8位
LCD_ILI9486_Parameter((Ypos +4& 0xff00) >> 8); //发送Y轴结束坐标的高8位
LCD_ILI9486_Parameter((Ypos +4& 0x00ff)); //发送Y轴结束坐标的低8位
LCD_ILI9486_CMD(0x2C);//发送像素点的颜色信息
// for(i=0;i<25;i++)
LCD_ILI9486_Parameter(Color);//颜色渐变
}
/*************
功能:LCD画任意角度函数
参数:x1,y1:起始点坐标(x取值范围:0~319,y:0~479)
x2,y2:终点坐标
color:线颜色(除白色0xFFFF)
**************/
void draw_line(u16 x1,u16 x2,u16 y1,u16 y2,u16 color)
{
//循环需要变量,斜率需要保存
u16 i,k;
//斜率是否等于0
if(x1==x2)//斜率等于0
{
if(y1<y2)
for(i=y1;i<=y2;i++){LCD_Draw_Point(x1, i, color);}
else
for(i=y2;i<=y1;i++){LCD_Draw_Point(x1, i, color);}
}
else//斜率不等0
{
if(y1==y2)//斜率不等于0且不存在
{
if(x1<x2)
for(i=x1;i<=x2;i++){LCD_Draw_Point(i, y1, color);}
else
for(i=x2;i<=x1;i++){LCD_Draw_Point(i, y1, color);}
}
else//斜率不等于0且斜率存在
{
k=(double)(y2-y1)/(x2-x1);
if(x1<x2)
for(i=0;x1+i<=x2;i++){LCD_Draw_Point(x1+i, y1+i*k, color);}
else
for(i=0;x2+i<=x1;i++){LCD_Draw_Point(x2+i, y2+i*k, color);}
}
}
}
/***********
函数功能:清屏函数
参数:x1,y1:起始点坐标,y1,y2:终点坐标,color清屏颜色
返回值:无
***********/
void QP(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
{
int i;
LCD_ILI9486_CMD(0x2A); //发送0x2A命令,设置X轴坐标
LCD_ILI9486_Parameter((x1& 0xff00) >> 8); //发送X轴起始坐标的高8位
LCD_ILI9486_Parameter((x1& 0x00ff)); //发送X轴起始坐标的低8位
LCD_ILI9486_Parameter((x2& 0xff00) >> 8); //发送X轴结束坐标的高8位
LCD_ILI9486_Parameter((x2& 0x00ff)); //发送X轴结束坐标的低8位
LCD_ILI9486_CMD(0x2B); //发送0x2B命令,设置Y轴坐标
LCD_ILI9486_Parameter((y1& 0xff00) >> 8); //发送Y轴起始坐标的高8位
LCD_ILI9486_Parameter((y1& 0x00ff)); //发送Y轴起始坐标的低8位
LCD_ILI9486_Parameter((y2& 0xff00) >> 8); //发送Y轴结束坐标的高8位
LCD_ILI9486_Parameter((y2& 0x00ff)); //发送Y轴结束坐标的低8位
LCD_ILI9486_CMD(0x2C);//发送像素点的颜色信息
for(i=0;i<(x2-x1)*(y2-y1);i++)
LCD_ILI9486_Parameter(color);
}
/***********
函数功能:画圆形
参数:x1,y1:圆心,r:半径
返回值:无
u=2*3.14*(i/360)
***********/
//极坐标系
void YUAN(u16 i, u16 j, u16 r, u16 color)
{
double n,x,y,m;
if(r == 0)
{
LCD_Draw_Point(i,j,color);
}
else
{
for( m=0; m<36000; m=m+1)
{
n=2*3.1415926*(m/36000.0);
x = r*cos(n)+i;
y = r*sin(n)+j;
LCD_Draw_Point( x, y, color);
}
}
}
//直角坐标系
void yuan(u16 a,u16 b,u16 r,u16 color)
{
u16 i,x,y;
//以x(i)为自变量
for(i=a-r;i<=a+r;i++)
{
y=sqrt(r*r-(i-a)*(i-a));
LCD_Draw_Point(i,b+y,color);
LCD_Draw_Point(i,b-y,color);
}
for(i=b-r;i<=b+r;i++)
{
x=sqrt(r*r-(i-b)*(i-b));
LCD_Draw_Point(a+x,i,color);
LCD_Draw_Point(a-x,i,color);
}
}
|