CGContextDrawPath只有笔画而且没有填充

时间:2015-03-25 06:40:53

标签: ios objective-c core-graphics cgcontextdrawpath

我正在尝试制作一个笔触和填充的形状,但它不会填充。

这是我的代码:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    CGMutablePathRef pathRef = CGPathCreateMutable();
    CGContextBeginPath(ctx);

    self.dottedLineColor = [UIColor whiteColor];
    self.solidLineColor = [UIColor blackColor];
    CGContextSetStrokeColorWithColor(ctx, [self.dottedLineColor CGColor]);
    CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);

    CGContextSetLineWidth(ctx, 11.0);

    for (NSArray *array in previewPoints){
            CGPoint pointMadeFromString1 = CGPointFromString([array objectAtIndex:0]);
            CGPoint pointMadeFromString2 = CGPointFromString([array objectAtIndex:1]);

            CGPathMoveToPoint(pathRef, NULL, pointMadeFromString1.x, pointMadeFromString1.y);
            CGPathAddLineToPoint(pathRef, NULL, pointMadeFromString2.x, pointMadeFromString2.y);
            /*
             CGContextMoveToPoint(ctx, pointMadeFromString1.x, pointMadeFromString1.y);
             CGContextAddLineToPoint(ctx, pointMadeFromString2.x, pointMadeFromString2.y);

             CGContextSetLineWidth(ctx, 11.0);
             const CGFloat dashPattern[2] = {2, 0};
             CGContextSetLineDash(ctx, 2, dashPattern, 2);
             CGContextStrokePath(ctx);
             */
    }
    CGContextAddPath(ctx, pathRef);
    CGContextClosePath(ctx);

    CGContextDrawPath(ctx, kCGPathFillStroke);
    CGContextFillPath(ctx);
}

以下是它现在的样子:

enter image description here

中间区域应为黑色。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题在于每次我使用CGPathMoveToPoint时都意味着它无法填充,因为它实际上并不是一条封闭的路径。我将其切换为只有数组中的第一项使用CGPathMoveToPoint,然后所有其他项都会使用CGPathAddLineToPoint