这是我绘制多边形的代码。它有效,但不会关闭或填充。
CGContextBeginPath(DrawContext);
for(int i=0;i<sides-1;i++) {
CGContextMoveToPoint(DrawContext, getRealPos(i)->getX(), getRealPos(i)->getY());
CGContextAddLineToPoint(DrawContext, getRealPos(i+1)->getX(), getRealPos(i+1)->getY());
}
CGContextClosePath(DrawContext);
CGContextStrokePath(DrawContext);
CGContextFillPath(DrawContext);
答案 0 :(得分:1)
您正面临此问题,因为您在循环中使用CGContextMoveToPoint
。 CGContextMoveToPoint
用于设置当前点并开始新的子路径。换句话说,只是为了定义路径的起点。
CGContextAddLineToPoint
将从此点添加到指定点的线,并将当前点设置为线段的端点。因此,在绘制一行后,您不必每次都使用CGContextMoveToPoint
。此外,当您使用CGContextMoveToPoint
时,它会启动一个新的子路径。所以基本上你只关闭代码中的一个子路径,那就是最后一个。
因此,仅在CGContextMoveToPoint
循环之外使用for
,然后使用CGContextAddLineToPoint
继续绘制。最后使用CGContextClosePath
关闭它。
如需进一步了解,请参阅文档: