下面是一段代码,我试图绘制一个圆,但我的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);
答案 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精度。