重なり合う2つの円を描きました。それらを結合された新しい形状として塗りつぶし、ストロークできるようにしたいと考えています。
現時点では、パス シーケンスを 1 回作成してストロークし、そのコピーを作成して塗りつぶし、2 つの同一のパスを重ね合わせて、1 つの形状として表示します。より良いアプローチがありますか、それともこれで問題ありませんか?
更新:サンプルコードは次のとおりです。
CGMutablePathRef path = CGPathCreateMutable();
CGContextSetStrokeColorWithColor(theContext, strokeColor.CGColor);
CGContextSetLineWidth(theContext, 2);
CGContextSetFillColorWithColor(theContext, fillColor.CGColor);
CGRect rect1 = CGRectMake(0,0, mySize*0.6, mySize*0.6);
CGRect rect2 = CGRectMake(mySize*0.4,0, mySize*0.6, mySize*0.6);
CGPathAddEllipseInRect(path, NULL, rect1);
CGPathAddEllipseInRect(path, NULL, rect2);
CGContextAddPath(theContext, path);
CGContextDrawPath(theContext, kCGPathFillStroke);
CGPathRef pathFill = CGPathCreateCopy ( path );
CGContextAddPath(theContext, pathFill);
CGContextDrawPath(theContext, kCGPathFill);
CGPathRelease(path);
CGPathRelease(pathFill);
ご覧のとおり、元のパスのコピーを作成し、ストロークなしで上に描画するため、最終的に 1 つの結合された形状に見えます。重複の作成を回避する方法はありますか?