2012-08-23 66 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 –