在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++;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>