2

我正在我的应用程序中构建一个绘图类型工具。

它从用户那里获取一个触摸点并在这些点之间画线。如果用户创建了 3 个或更多的接触点,它会将最后一个点连接到第一个点。

代码的摘录是:

startPoint = [[secondDotsArray objectAtIndex:i] CGPointValue];
    endPoint = [[secondDotsArray objectAtIndex:(i + 1)] CGPointValue];
    CGContextAddEllipseInRect(context,(CGRectMake ((endPoint.x - 5.7), (endPoint.y - 5.7)
                                                   , 9.0, 9.0)));
    CGContextDrawPath(context, kCGPathFill);
    CGContextMoveToPoint(context, startPoint.x, startPoint.y);
    CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
    CGContextStrokePath(context);

我希望在这些路径中包含的区域“着色”。我应该看什么?

4

1 回答 1

1

您需要使用CGContextFillPathAPI。但是,您应该注意如何定义路径:

  • 从调用CGContextMoveToPoint初始点开始
  • 继续绘制除结束段以外的所有段CGContextAddLineToPoint
  • 用 关闭路径CGContextClosePath。不要在最后一段上添加线到点。

的调用CGContextFillPath将生成一条使用您之前设置的填充颜色着色的路径。

这是一个例子:

CGPoint pt0 = startPoint = [[secondDotsArray objectAtIndex:0] CGPointValue];
CGContextMoveToPoint(context, pt0.x, pt0.y);
for (int i = 1 ; i < noOfDots ; i++) {
    CGPoint next = [[secondDotsArray objectAtIndex:i] CGPointValue];
    CGContextAddLineToPoint(context, next.x, next.y);
}
CGContextClosePath(context);
CGContextFillPath(context);
于 2012-08-23T14:57:30.363 回答