|
发表于 2012-3-30 19:51:22
|
显示全部楼层
我用的这个- 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)
- {
- int32_t D; /* Decision Variable */
- uint32_t CurX;/* Current X Value */
- uint32_t CurY;/* Current Y Value */
- D = 3 - (Radius << 1);
- CurX = 0;
- CurY = Radius;
-
-
-
- D = 3 - (Radius << 1);
- CurX = 0;
- CurY = Radius;
- while (CurX <= CurY)
- {
- if(full_or_not!=0)
- {
- LCD_DrawLine_HORIZONTAL(Xpos - CurX, Ypos + CurY, 2*CurX, Circle_colour);
- LCD_DrawLine_HORIZONTAL(Xpos - CurX, Ypos - CurY, 2*CurX, Circle_colour);
-
- LCD_DrawLine_HORIZONTAL(Xpos - CurY, Ypos + CurX, 2*CurY, Circle_colour);
- LCD_DrawLine_HORIZONTAL(Xpos - CurY, Ypos - CurX, 2*CurY, Circle_colour);
- }
- else
- {
- DrawPixel(Xpos + CurX, Ypos + CurY, Circle_colour);
- DrawPixel(Xpos + CurX, Ypos - CurY, Circle_colour);
- DrawPixel(Xpos - CurX, Ypos + CurY, Circle_colour);
- DrawPixel(Xpos - CurX, Ypos - CurY, Circle_colour);
- DrawPixel(Xpos + CurY, Ypos + CurX, Circle_colour);
- DrawPixel(Xpos + CurY, Ypos - CurX, Circle_colour);
- DrawPixel(Xpos - CurY, Ypos + CurX, Circle_colour);
- DrawPixel(Xpos - CurY, Ypos - CurX, Circle_colour);
- }
-
- if (D < 0)
- {
- D += (CurX << 2) + 6;
- }
- else
- {
- D += ((CurX - CurY) << 2) + 10;
- CurY--;
- }
- CurX++;
- }
- }
复制代码 |
|