2012-08-23 35 views
2

我正在建立一个绘图类型的工具到我的应用程序。在CGPaths之间着色

它需要用户触摸点并在点之间画线。如果用户创建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); 

我想“颜色”的区域包含这些路径内。 我应该看什么?

回答

1

您需要使用CGContextFillPath API。你应该小心你是如何定义的路径,虽然:

  • 开始由初始点
  • 通过绘制各阶层,除了关闭一个与CGContextAddLineToPoint
  • CGContextClosePath关闭路径继续调用CGContextMoveToPoint。不要在最后一段添加线条。

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

感谢@dasblinkenlight,我只是双重检查我尝试这一点,我在我的问题的问清楚了。我有iPhone在所触及的点之间绘制蓝线。我想要做的是这三条线之间的区域的颜色。这还好吗? –

+0

@ Romhaire如果三条线代表一条封闭的路径(即三角形),那么是,则'CGContextFillPath'将在该三角形中着色。 – dasblinkenlight

+0

我想我已经正确地关注了你的步骤。我的方法内是否存在冲突?我在这里修改了[pastebin](http://pastebin.com/wgu3vkUP)的方法。欢呼@dasbinkenlight –