用C语言怎么画圆呢?

2020-01-23 14:36发布

请问谁懂C语言画圆的原理?无穷多边形吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
jeffwei
2020-01-24 22:54
我用的这个
  1. void LCD_DrawFullCircle(rt_uint16_t Xpos, rt_uint16_t Ypos, rt_uint16_t Radius, rt_uint16_t Circle_colour, rt_uint16_t full_or_not)
  2. {
  3.   int32_t  D;    /* Decision Variable */
  4.   uint32_t  CurX;/* Current X Value */
  5.   uint32_t  CurY;/* Current Y Value */
  6.   D = 3 - (Radius << 1);
  7.   CurX = 0;
  8.   CurY = Radius;   
  9.   
  10.   
  11.   
  12.   D = 3 - (Radius << 1);
  13.   CurX = 0;
  14.   CurY = Radius;
  15.   while (CurX <= CurY)
  16.   {
  17.     if(full_or_not!=0)
  18.     {
  19.       LCD_DrawLine_HORIZONTAL(Xpos - CurX, Ypos + CurY, 2*CurX, Circle_colour);
  20.       LCD_DrawLine_HORIZONTAL(Xpos - CurX, Ypos - CurY, 2*CurX, Circle_colour);
  21.       
  22.       LCD_DrawLine_HORIZONTAL(Xpos - CurY, Ypos + CurX, 2*CurY, Circle_colour);
  23.       LCD_DrawLine_HORIZONTAL(Xpos - CurY, Ypos - CurX, 2*CurY, Circle_colour);
  24.     }
  25.     else
  26.     {
  27.       DrawPixel(Xpos + CurX, Ypos + CurY, Circle_colour);
  28.       DrawPixel(Xpos + CurX, Ypos - CurY, Circle_colour);
  29.       DrawPixel(Xpos - CurX, Ypos + CurY, Circle_colour);
  30.       DrawPixel(Xpos - CurX, Ypos - CurY, Circle_colour);
  31.       DrawPixel(Xpos + CurY, Ypos + CurX, Circle_colour);
  32.       DrawPixel(Xpos + CurY, Ypos - CurX, Circle_colour);
  33.       DrawPixel(Xpos - CurY, Ypos + CurX, Circle_colour);
  34.       DrawPixel(Xpos - CurY, Ypos - CurX, Circle_colour);
  35.     }
  36.    
  37.     if (D < 0)
  38.     {
  39.       D += (CurX << 2) + 6;
  40.     }
  41.     else
  42.     {
  43.       D += ((CurX - CurY) << 2) + 10;
  44.       CurY--;
  45.     }
  46.     CurX++;
  47.   }
  48. }
复制代码

一周热门 更多>