帮助在iPhone中绘制圆圈

时间:2010-08-05 19:56:02

标签: iphone core-graphics

下面是一段代码,我试图绘制一个圆,但我的x值打印为常量值。这很可能非常简单。提前感谢您的帮助。

int sides = 100;
int radius = 200;
int centerX = 100;
int centerY = 100;
CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
CGContextSetStrokeColor(context, red);
CGContextBeginPath(context);


CGContextMoveToPoint(context, 0, 0);
int i = 0;
for(i = 0; i <= sides; i++)
{

    CGFloat pointRatio = i/sides;
    CGFloat xSteps = cos( pointRatio * 2 * M_PI);
    CGFloat ySteps = sin( pointRatio * 2 * M_PI );
    CGFloat pointX = centerX + xSteps * radius;
    CGFloat pointY = centerY + ySteps * radius;
    NSLog(@"%i", pointX);

    CGContextAddLineToPoint(context, pointX, pointY);
}
CGContextStrokePath(context);

3 个答案:

答案 0 :(得分:8)

CGFloat pointRatio = i/sides;

当你除2个整数时,结果也将是整数 - 在你的情况下为0。您必须确保将执行浮点除法:

CGFloat pointRatio = 1.0f*i/sides;
// Or even better
CGFloat pointRatio = i/(CGFloat)sides;

顺便说一下,为什么你不想使用内置函数绘制圆圈:

CGPathAddEllipseInRect(path, NULL, 
           CGRectMake(centerX - radius, centerY - radius, 2*radius, 2*radius));

答案 1 :(得分:5)

您只需要2行代码就可以绘制一个真正的圆形圆圈。我的示例代码:

CGContextAddArc(contextRef,centerX,centerY,radius,0,2*3.1415926535898,1);
CGContextDrawPath(contextRef,kCGPathStroke);

答案 2 :(得分:0)

以前的答案是对的。另外,使用cosf()和sinf(),而不是cos()和sin() - 你正在使用float精度。