ch4n9 发表于 2012-11-14 22:19:35

关于在tft上画圆的算法

我在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++;
    }
}

jetli 发表于 2012-11-14 22:46:00

神马驱动ic

932x ?{:shocked:}

ch4n9 发表于 2012-11-14 22:54:07

jetli 发表于 2012-11-14 22:46 static/image/common/back.gif
神马驱动ic

932x ?

应该是ST7735

aaronhuang 发表于 2012-11-14 22:55:26

tft上画圆 Bresenham算法

Wxy8030 发表于 2012-11-14 22:58:17

关注一下!
页: [1]
查看完整版本: 关于在tft上画圆的算法