CGContextAddLineToPoint

CGContextAddLineToPoint

我有以下代码应该绘制一个描边和填充的矩形,但填充不会显示。

    [[UIColor greenColor] setStroke];
    [[UIColor brownColor] setFill];

    CGContextBeginPath(context);
    CGContextMoveToPoint(context, right, bottom);
    CGContextAddLineToPoint(context, right,top);
    CGContextAddLineToPoint(context,left, top);
    CGContextAddLineToPoint(context, left, bottom);
    CGContextAddLineToPoint(context, right, bottom);

    CGContextStrokePath(context);
    CGContextFillPath(context);

笔触有效,我得到一个不错的绿色矩形,没有填充(或白色填充)。这是在iOS的UIView中。看起来很简单,这真让我发疯!

最佳答案

正确的方法是将绘图模式设置为同时包含填充和路径。

CGPathDrawingMode mode = kCGPathFillStroke;
CGContextClosePath( context ); //ensure path is closed, not necessary if you know it is
CGContextDrawPath( context, mode );

您可以使用CGContextFillPath()进行填充,但是基本上它只是CGContextDrawPath(),它会自动调用CGContextClosePath()并将kCGPathFill用作CGPathDrawingMode。您不妨始终使用CGContextDrawPath()并输入自己的参数来获取所需的填充/笔触类型。您也可以使用偶数-奇数绘制模式之一在凸路径上放置孔。

10-06 13:24