关于在tft上画圆的算法

2020-02-02 09:22发布

我在tft上画圆。。用的是Bresenham算法。可是画出的圆失真严重,请问要怎么才能画出比较圆的圆?
Bresenham算法代码如下

void CirclePoint(uint16 x,uint16 y,uint16 x0,uint16 y0,uint16 color)
{
     PutPixel(x,y,color);
     PutPixel(y,x,color);
     PutPixel(x,2*y0-y,color);
     PutPixel(y,2*y0-x,color);
     PutPixel(2*x0-y,2*y0-x,color);
     PutPixel(2*x0-x,2*y0-y,color);
     PutPixel(2*x0-x,y,color);
     PutPixel(2*x0-y,x,color);
}

void MidBresenhamcircle(uint16 x0,uint16 y0,uint16 R)
{
     int16 x,y;
     int16 d;
     x=x0;
     y=y0+R;      
     d=3-2*R;/* 计算初始值 */

     while(x<(x0+R/1.4))
     {   
        CirclePoint(x,y,x0,y0,2);  /*绘制点(x,y)及其在八分圆中的另外7个对称点*/
        if(d<0)  
            d+=4*x+6;   
                   /*根据误差项d的判断,决定非最大位移方向上是走还是不走*/
        else
        {
           d+=4*(x-y)+10;
           y--;
        }
        x++;
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jetli
1楼-- · 2020-02-02 11:50
神马驱动ic  

932x ?
ch4n9
2楼-- · 2020-02-02 17:31
jetli 发表于 2012-11-14 22:46
神马驱动ic  

932x ?

应该是ST7735
aaronhuang
3楼-- · 2020-02-02 19:23
tft上画圆 Bresenham算法
Wxy8030
4楼-- · 2020-02-03 00:17
 精彩回答 2  元偷偷看……

一周热门 更多>