//在指定位置画一个指定大小的实心圆
//(x,y):中心点
//r :半径
void Draw_RealCircle(u16 x0,u16 y0,u8 r)
{
int a,b,bi;
int di;
a=0;b=r;
di=3-(r<<1); //判断下个点位置的标志
while(a<=b)
{
for(bi=a;bi<=b;bi++) //////加入这一条语句就可以画实心圆///////////////
{
LCD_DrawPoint(x0+a,y0-bi); //5
LCD_DrawPoint(x0+bi,y0-a); //0
LCD_DrawPoint(x0+bi,y0+a); //4
LCD_DrawPoint(x0+a,y0+bi); //6
LCD_DrawPoint(x0-a,y0+bi); //1
LCD_DrawPoint(x0-bi,y0+a);
LCD_DrawPoint(x0-a,y0-bi); //2
LCD_DrawPoint(x0-bi,y0-a); //7
}
a++;
//使用Bresenham算法画圆
if(di<0)di +=4*a+6;
else
{
di+=10+4*(a-b);
b--;
}
}
}
参考网上的bresenham 算法画圆例子,在原子的TFT显示程序画圆的算法上加了一条就能花一个实心圆了
|