如果添加了填充,CGContextDrawPath笔划将消失

时间:2011-04-25 17:48:49

标签: iphone ios drawing quartz-2d

尝试绘制分为动态提供的扇区数的圆圈。最后,我的圈子应该像馅饼。

我创建了一个包含多个Pies的圆圈。 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 :(得分:0)

好的,发现我的错误:必须在NO电话中设置CGContextAddArc