/****************************************
对称法画圆的8个镜像点
*****************************************/
void CircleDot(unsigned char x,unsigned char y,char xx,char yy,unsigned char Color)//内部函数,对称法画圆的8个镜像点
{
Lcd_PutPixel((x+yy),(y+xx),Color);//第 1 个 8 分圆
Lcd_PutPixel((x+xx),(y+yy),Color);//第 2 个 8 分圆
Lcd_PutPixel((x-xx),(y+yy),Color);//第 3 个 8 分圆
Lcd_PutPixel((x-yy),(y+xx),Color);//第 4 个 8 分圆
Lcd_PutPixel((x-yy),(y-xx),Color);//第 5 个 8 分圆
Lcd_PutPixel((x-xx),(y-yy),Color);//第 6 个 8 分圆
Lcd_PutPixel((x+xx),(y-yy),Color);//第 7 个 8 分圆
Lcd_PutPixel((x+yy),(y-xx),Color);//第 8 个 8 分圆
}
/******************************************
向LCD指定圆心坐标画一个半径为r的指定颜色的圆
*******************************************/
void Lcd_Circle(unsigned char x,unsigned char y,unsigned char r,unsigned char Color)//中点法画圆
{//中点法画圆
unsigned char xx,yy;
char deltax,deltay,d;
xx=0;
yy=r;
deltax=3;
deltay=2-r-r;
d=1-r;
CircleDot(x,y,xx,yy,Color);//对称法画圆的8个镜像点
while (xx
{
if (d<0)
{
d+=deltax;
deltax+=2;
xx++;
}
else
{
d+=deltax+deltay;
deltax+=2;
deltay+=2;
xx++;
yy--;
}
CircleDot(x,y,xx,yy,Color);//对称法画圆的8个镜像点
}
}
|