关于LCD例子中的画实心圆的代码有点看不懂,自己写了一个,可能有点笨

2019-07-21 04:47发布

原子哥原来的代码
void gui_fill_circle(u16 x0,u16 y0,u16 r,u16 color)
{            
 u32 i;
 u32 imax = ((u32)r*707)/1000+1;
 u32 sqmax = (u32)r*(u32)r+(u32)r/2;
 u32 x=r;
 gui_draw_hline(x0-r,y0,2*r,color);//?­?±??
 
 for (i=1;i<=imax;i++)
 {
  if ((i*i+x*x)>sqmax)// draw lines from outside 
  {
    if (x>imax)
   {
    gui_draw_hline (x0-i+1,y0+x,2*(i-1),color);
    gui_draw_hline (x0-i+1,y0-x,2*(i-1),color);
   }
   x--;
  }
  // draw lines from inside (center) 
  gui_draw_hline(x0-x,y0+i,2*x,color);
  gui_draw_hline(x0-x,y0-i,2*x,color);
 }
}
自己改的代码 void MY_gui_fill_circle(u16 x0,u16 y0,u16 r,u16 color)

 u16 i,j;
 for(i=x0-r;i<=x0;i++)
 {
  for(j=y0-r;j<=y0+r;j++)
  { 
   if((i-x0)*(i-x0)+(j-y0)*(j-y0)<r*r)
    gui_draw_hline(i,j,2*(x0-i),RED);
  }
 } } 原来的代码含义还望高手解释下!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。