Помогите нарисовать круг в айфоне - PullRequest
1 голос
/ 05 августа 2010

Ниже приведен фрагмент кода, в котором я пытаюсь нарисовать круг, но мое значение 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 ]

8 голосов
/ 06 августа 2010
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));
5 голосов
/ 14 ноября 2011

Вам нужно всего 2 строки кода, чтобы нарисовать настоящий круглый круг. Мой пример кода:

CGContextAddArc(contextRef,centerX,centerY,radius,0,2*3.1415926535898,1);
CGContextDrawPath(contextRef,kCGPathStroke);
0 голосов
/ 06 августа 2010

Предыдущий ответ правильный. Также используйте cosf () и sinf (), а не cos () и sin () - вы работаете с плавающей точностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...