CGContextDrawPath Stroke исчезает при добавлении Fill - PullRequest
0 голосов
/ 25 апреля 2011

пытается нарисовать круг, разделенный на динамически предоставленное количество секторов. В конце мой круг должен выглядеть как пирог.

Я создал класс Circle, который содержит количество пирогов внутри. Круг имеет метод - (void)draw, который вызывает [pie draw]; в for (Pie *pie in self.pies) цикле.

Реализация пирога выглядит так:

- (void)draw {  

  CGContextRef context = UIGraphicsGetCurrentContext();

  float startAngleRads = degreesToRadians(_startAngle);
  float endAngleRads = degreesToRadians(_endAngle);


  CGContextBeginPath(context);
  CGContextSetLineWidth(context, 1.0f);
  CGContextSetLineCap(context, kCGLineCapRound);
  CGContextSetLineJoin(context, kCGLineJoinRound);

  CGColorRef strokeColor = [_strokeColor CGColor];
  CGContextSetStrokeColorWithColor(context, strokeColor);

  CGColorRef fillColor = [_bgColor CGColor];
  CGContextSetFillColorWithColor(context, fillColor);


  CGContextMoveToPoint(context, _x, _y);
  CGContextAddArc(context, _x, _y, _r, startAngleRads, endAngleRads, YES);
  CGContextDrawPath(context, kCGPathStroke);

  CGContextFlush(context);
}

Это рисует хороший круг с секторами, но без заливки, конечно. Когда я изменяю последние строки на CGContextDrawPath(context, kCGPathStrokeFill);, мои линии обводки исчезают, и на экране остается только последняя линия (последний сектор), другие части круга заполняются bgcolor, и обводка больше не видна.

Вопрос: как я могу нарисовать полностью разделенные «сектора» (каждый сектор должен выглядеть как треугольник с Arc, Stroke и Fill). Мне это нужно, потому что я хочу переключать видимость этих секторов, но в данный момент я даже не могу понять, как их правильно нарисовать.

Если это важно, все рисование происходит на слое с self.opaque = NO;.

1 Ответ

0 голосов
/ 26 апреля 2011

Хорошо, нашел мою ошибку: пришлось установить NO в CGContextAddArc вызов.

...