关于在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++;
}
} 神马驱动ic
932x ?{:shocked:} jetli 发表于 2012-11-14 22:46 static/image/common/back.gif
神马驱动ic
932x ?
应该是ST7735 tft上画圆 Bresenham算法 关注一下!
页:
[1]