为什么我的核心图形路径没有关闭?

时间:2014-05-13 03:59:13

标签: core-graphics objective-c++

这是我绘制多边形的代码。它有效,但不会关闭或填充。

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);

1 个答案:

答案 0 :(得分:1)

您正面临此问题,因为您在循环中使用CGContextMoveToPointCGContextMoveToPoint用于设置当前点并开始新的子路径。换句话说,只是为了定义路径的起点。

CGContextAddLineToPoint将从此点添加到指定点的线,并将当前点设置为线段的端点。因此,在绘制一行后,您不必每次都使用CGContextMoveToPoint。此外,当您使用CGContextMoveToPoint时,它会启动一个新的子路径。所以基本上你只关闭代码中的一个子路径,那就是最后一个。

因此,仅在CGContextMoveToPoint循环之外使用for,然后使用CGContextAddLineToPoint继续绘制。最后使用CGContextClosePath关闭它。

如需进一步了解,请参阅文档:

https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGContext/Reference/reference.html#//apple_ref/c/func/CGContextMoveToPoint