2

CGContextAddPath を使用して CGPath を追加した後、コンテキストから CGPath を削除して、後で描画コマンドがパスの寸法に制限されないようにする方法があるかどうか疑問に思っていました。

4

2 に答える 2

3

CGContextBeginPath(...)指定されたコンテキストから以前に追加されたパスを削除するために使用する必要があります。

Apple のドキュメントからのメソッドに関するディスカッション:

グラフィックス コンテキストは、常に 1 つのパスしか使用できません。この関数を呼び出すときに、指定されたコンテキストに現在のパスがすでに含まれている場合、Quartz は古いパスとそれに関連付けられているすべてのデータを破棄します。

現在のパスはグラフィックス状態の一部ではありません。したがって、グラフィックス状態を保存および復元しても、現在のパスには影響しません。

以下のように:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextAddPath(context, ellipsePath);
CGContextDrawPath(context, kCGPathFill);

CGContextBeginPath(context);

CGContextAddPath(context, strokePath);
CGContextDrawPath(context, kCGPathStroke);
于 2016-08-30T20:22:47.920 に答える
0

パスがコンテキストに入ると、パスを削除する方法はありません。その特定のパスなしで再描画するだけです。

于 2012-07-06T17:37:15.987 に答える