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 に答える