中级会员
 
- 积分
- 283
- 金钱
- 283
- 注册时间
- 2015-2-17
- 在线时间
- 9 小时
|
发表于 2015-3-8 15:42:45
|
显示全部楼层
void Draw_Circle(u16 x0,u16 y0,u8 r)
{
int a,b;
int di;
a=0;b=r;
di=3-(r<<1); //判断下个点位置的标志
while(a<=b)
{
LCD_DrawPoint(x0+a,y0-b); //5
LCD_DrawPoint(x0+b,y0-a); //0
LCD_DrawPoint(x0+b,y0+a); //4
LCD_DrawPoint(x0+a,y0+b); //6
LCD_DrawPoint(x0-a,y0+b); //1
LCD_DrawPoint(x0-b,y0+a);
LCD_DrawPoint(x0-a,y0-b); //2
LCD_DrawPoint(x0-b,y0-a); //7
a++;
//使用Bresenham算法画圆
if(di<0)di +=4*a+6;
else
{
di+=10+4*(a-b);
b--;
}
}
}
而画圆的函数,简单的说就是在平凡的调用LCD_DrawPoint(x,y)函数,你进去这条画点的函数看看,
void LCD_DrawPoint(u16 x,u16 y)
{
LCD_SetCursor(x,y); //设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM
LCD->LCD_RAM=POINT_COLOR;
}
他就是始终用到一种颜色 LCD->LCD_RAM=POINT_COLOR,就是画笔颜色,如你LCD画的圆所示,看不到白色的背景颜色,因为你就始终让POINT_COLOR为红色。 |
|