我有以下代码应该绘制一个描边和填充的矩形,但填充不会显示。
[[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()
并输入自己的参数来获取所需的填充/笔触类型。您也可以使用偶数-奇数绘制模式之一在凸路径上放置孔。