经典的几种画圆算法

来源:互联网 发布:免费数据采集软件 编辑:程序博客网 时间:2024/05/16 01:44


void CirclePoint(int x,int y,int x0,int y0,int color)

{
LCD_Set_Pixel(x+x0,y+y0,color);
LCD_Set_Pixel(y+x0,x+y0,color);
LCD_Set_Pixel(y+x0,-x+y0,color);
LCD_Set_Pixel(x+x0,-y+y0,color);
LCD_Set_Pixel(-x+x0,-y+y0,color);
LCD_Set_Pixel(-y+x0,-x+y0,color);
LCD_Set_Pixel(-y+x0,x+y0,color);
LCD_Set_Pixel(-x+x0,y+y0,color);
}
void TGUI_DrawRound(int x0,int y0,int r,int color)
{
int x,y,d;
x=0;
y=r;
d=1-r;
CirclePoint(x,y,x0,y0,color);
while(x<=y)
{
if(d<0){d+=2*x+3;x++;}
else{d+=2*(x-y)+5;x++;y--;}
CirclePoint(x,y,x0,y0,color);
}

}

void CirclePoint1(int x,int y,int x0,int y0,int color)
{
LCD_Set_Pixel(x+x0,y+y0,color);
LCD_Set_Pixel(y+x0,x+y0,color);
LCD_Set_Pixel(y+x0,-x+y0,color);
LCD_Set_Pixel(x+x0,-y+y0,color);
LCD_Set_Pixel(-x+x0,-y+y0,color);
LCD_Set_Pixel(-y+x0,-x+y0,color);
LCD_Set_Pixel(-y+x0,x+y0,color);
LCD_Set_Pixel(-x+x0,y+y0,color);
}
void Draw_Round(uint16 X0,uint16 Y0,uint16 R0,uint16 Color)
{
uint16 X,Y,RR,XX;
RR=R0*R0;
for(X=0;X
{
XX=X*X;
for(Y=0;Y<=R0;Y++)
{
if(fabs((XX+Y*Y)-RR)<10)CirclePoint1(X,Y,X0,Y0,Color);
}
}
}


0 0
原创粉丝点击