1

UIBezierPath を使用して角の丸い多角形を作成したいと思います。http://www.codeproject.com/Articles/31859/Draw-a-Smooth-Curve-through-a-Set-of-2D-Points-witaddCurveToPoint:controlPoint1:controlPoint2:あるコードと同様のコードを使用すると、これが可能になると思います。しかし、これを達成するための既存の(またはより良い)方法があるかどうか疑問に思っていましたか?

これは、長方形だけでなく、任意の凸多角形 (ボロノイ図に見られるものなど) に必要であることを指摘しておく必要があります。

4

3 に答える 3

6

addCurveToPoint は必要ありません。UIBezierPath を使用している場合は、addArcWithCenter:radius:startAngle:endAngle:clockwise が必要です。

これがあなたがすることです。長方形を描きます。必要なコーナー半径を計算します。各コーナーに円を描き、コーナー半径で各辺から挿入します。(各角の円の中心は、x と y の両方の角の半径によって各角から挿入されます。) 次に、四角形が各角の円に接触する点を接続して、一連の 4 本の線をマップします。

各円弧は 90 度 (ラジアンで pi/2) をカバーします。右上隅の範囲は 0 から pi/2 です。左上隅の角度は pi/2 から始まり、pi になります。左下隅の弧は pi から 3/2 pi の範囲になります。右下の円弧の角度は、3/2 pi から 2pi の範囲になります。

次のシーケンスを使用します。

  • moveToPoint addLineToPoint -- 最初の側

    addArcWithCenter:radius:startAngle:endAngle:clockwise -- 最初の角を丸くします

    lineToPoint -- 2 番目の辺、次の丸い角の始点まで

    addArcWithCenter:radius:startAngle:endAngle:clockwise -- 2 番目の丸い角

    lineToPoint -- 3 番目の辺、次の丸い角の始点まで

    addArcWithCenter:radius:startAngle:endAngle:clockwise -- 3 番目の丸い角

    lineToPoint -- 前側、最後に丸められた角の始点まで

    addArcWithCenter:radius:startAngle:endAngle:clockwise -- 4 番目の丸みを帯びた角で、最初の側面に戻ります。

    closePath

于 2012-04-28T00:42:59.947 に答える
2

PaintCodeAppを使用できるため、描画コードを記述する必要はありません。利用可能なデモダウンロードがあります:http://www.paintcodeapp.com/

于 2012-04-27T22:45:12.360 に答える