CoreGraphics == Good Times。
私は何もしなかったので、しばらくしてきました。私が最近しているのは、作図作業に先立ってすべてを構築することです。 Logoから暗黙の 'カーソル'があり、描画操作を行わずに移動することはできますが、指定する必要があります。私は良いアプローチ(少なくとも静的な数字の場合)は、最初に描画しなければならないパスを作成し、塗りつぶし、ストローク、シェーディングなどのパスを繰り返し使用することだと思います。
CGColorRef fillColor = // yadda
CGColorRef strokeColor = // yadda
const CGFloat radius = 5.0;
// Create the path first - rounded rectangle
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 100.0 - radius, 10.0);
CGPathAddLineToPoint(path, NULL, 10.0 + radius, 10.0);
CGPathAddArcToPoint(path, NULL, 10.0, 10.0, 10.0, 10.0 + radius, radius);
CGPathAddLineToPoint(path, NULL, 10.0, 100.0 - radius);
CGPathAddArcToPoint(path, NULL, 10.0, 100.0, 10.0 + radius, 100.0, radius);
CGPathAddLineToPoint(path, NULL, 100.0 - radius, 100.0);
CGPathAddArcToPoint(path, NULL, 100.0, 100.0, 100.0, 100.0 - radius, radius);
CGPathAddLineToPoint(path, NULL, 100.0, 10.0 + radius);
CGPathAddArcToPoint(path, NULL, 100.0, 10.0, 100.0 - radius, 10.0, radius);
CGPathCloseSubpath(path);
// Then use it in your draw commands
CGContextSetStrokeColor(context, CGColorGetComponents(strokeColor));
CGContextSetFillColor(context, CGColorGetComponents(fillColor));
CGContextSetLineJoin(context, kCGLineJoinMiter);
CGContextSetLineWidth(context, strokeWidth);
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathFillStroke);
CGPathRelease(path);
など必要に応じて最後のパスを解放したり、後で使用するために参照を保存したりできます。
ご利用いただきありがとうございます。私がCGPathAddArcToPointを必要とするたびに、私は事実を理解することにつながりませんでした。 Appleのドキュメントでは値の端点を呼び出していますが、図3.5では接線点について説明しています。あなたの最初のパラメータ(10,10)が何をしていたのかを紙にプロットすることによって、それは本質的にコーナーポイントであるか、または2次ベジェ曲線の点でコントロールポイントであることが分かります。作業中のシェイプを理解することで、歪んだ矩形から素敵な丸い四角形に変わったことを確認しています。 – tobinjim
サービスのご利用をお待ちしております – QED
CGPathRelease(path)は必要ありません。最後に? –