大家有没有画实心圆的算法?

2019-12-28 17:50发布

就是用LCD画一个实心圆~~不是空心的哦~~是实心,可以填充任意颜 {MOD}的~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
55条回答
myqiang1990
1楼-- · 2019-12-29 18:45
 精彩回答 2  元偷偷看……
dongfo
2楼-- · 2019-12-29 20:59
senjet 发表于 2013-8-24 15:27
void FillCircle(int x0,int y0,int r,int mode)
{
int x,y;

大致讲一下原理吧?
myqiang1990
3楼-- · 2019-12-30 00:09
senjet 发表于 2013-8-24 15:46
就是在x,y处画点啊,mode是颜 {MOD}。这是快速画填充圆算法。相应的还有画线、画非填充圆、画椭圆,全部以画 ...

果然可以画一个填充圆,,谢谢你咯~~~~
czg1411
4楼-- · 2019-12-30 03:35
senjet 发表于 2013-8-24 15:46
就是在x,y处画点啊,mode是颜 {MOD}。这是快速画填充圆算法。相应的还有画线、画非填充圆、画椭圆,全部以画 ...

可以不用这么麻烦。Bresenham算法画圆画8个点改成4条线就可以填充。。。

void LCD_DrawCircle(int xc,int yc,int r,int color)
{
    int x,y,d;
    y = r;
    d = 3 - (r + r);
    x = 0;

    while(x <= y)
    {
          LCD_DrawLine(xc+x,yc+y,xc-x,yc+y,color);
          LCD_DrawLine(xc+x,yc-y,xc-x,yc-y,color);
          LCD_DrawLine(xc+y,yc+x,xc-y,yc+x,color);
          LCD_DrawLine(xc+y,yc-x,xc-y,yc-x,color);                       
          if(d < 0)
         {
             d += 4*x + 6;
         }
         else
        {
            d+=4*(x - y)+ 10;
            y --;
        }
        x ++;
    }
}
senjet
5楼-- · 2019-12-30 04:44
czg1411 发表于 2013-8-25 00:13
可以不用这么麻烦。Bresenham算法画圆画8个点改成4条线就可以填充。。。

void LCD_DrawCircle(int xc,in ...

别忘了画线也是以画点为基楚的。
czg1411
6楼-- · 2019-12-30 05:01
 精彩回答 2  元偷偷看……

一周热门 更多>