新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2013-1-24
- 在线时间
- 0 小时
|
发表于 2013-1-24 02:40:55
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子,稍作修改,作出的圆可以与你的代码作出的圆媲美,从ST官方GUI库找到的,与大家共享~
void LCD_DrawCircle(unsigned short x, unsigned short y, unsigned char Radius, unsigned short Color) {
signed int D; unsigned int CurX; unsigned int CurY;
D = 3 - (Radius << 1);
CurX = 0;
CurY = Radius;
while (CurX <= CurY)
{
LCD_SetPoint(x + CurX, y - CurY, Color);
LCD_SetPoint(x - CurX, y + CurY, Color);
LCD_SetPoint(x - CurX, y - CurY, Color);
LCD_SetPoint(x + CurX, y + CurY, Color);
LCD_SetPoint(x + CurY, y + CurX, Color);
LCD_SetPoint(x + CurY, y - CurX, Color);
LCD_SetPoint(x - CurY, y + CurX, Color);
LCD_SetPoint(x - CurY, y - CurX, Color);
if (D < 0)
{
D += (CurX << 2) + 6;
}
else
{
D += ((CurX - CurY) << 2) + 10;
CurY--;
}
CurX++;
}
} |
|