2020-01-23 14:36发布
y574924080 发表于 2012-3-29 19:37 可以看看这个 http://www.ourdev.cn/forum.php?mod=viewthread&tid=5462626&extra=page%3D1%26filter%3Ddi ...
51yyaayya 发表于 2012-3-30 13:55 谢谢,这个贴总结的很多啊!
最多设置5个标签!
谢谢,这个贴总结的很多啊!
不用,
大家互帮互助~~~~~~~
当年不知道从那抄的。。
- void LCD_Circle (unsigned int x, unsigned int y, unsigned int r, unsigned int color)
- {
- int a, b;
- int di;
- a = 0;
- b = r;
- di = 3 - 2 * r; //判断下个点位置的标志
- while (a <= b)
- {
- LCD_Point (x - b, y - a, color); //3
- LCD_Point (x + b, y - a, color); //0
- LCD_Point (x - a, y + b, color); //1
- LCD_Point (x - b, y - a, color); //7
- LCD_Point (x - a, y - b, color); //2
- LCD_Point (x + b, y + a, color); //4
- LCD_Point (x + a, y - b, color); //5
- LCD_Point (x + a, y + b, color); //6
- LCD_Point (x - b, y + a, color);
- a++;
- /***使用Bresenham算法画圆**/
- if (di < 0)
- di += 4 * a + 6;
- else
- {
- di += 10 + 4 * (a - b);
- b--;
- }
- LCD_Point (x + a, y + b, color);
- }
- }
复制代码- 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++;
- }
- }
复制代码一周热门 更多>