CGPathAddElipseInRect
楕円を描くための代替手段はありますか? それはうまく機能しますが、急勾配の曲線が少ないカスタム楕円が必要です。他にできることはありますか?このパスをCTFramesetterCreateFrame
in で使用してCoreText
いるため、さまざまな形状内にテキストを描画できます。
2 に答える
いいえ...
...しかし、それはコアグラフィックスで行うことができます
のようなものを使用するか、CGPathAddQuadCurveToPoint
楕円のカスタム パスを作成する必要があります。ベジエ パスのコントロール ポイントがどのように機能するかについてよく知らない場合は、ウィキペディアの記事を読むことから始めることができます。数学の部分を読む必要はありません。この画像 (ウィキペディアから) を見てください。CGPathAddCurveToPoint
CGPathAddArcToPoint
...AddCurveTo...
場合:
現在のポイントはp 0で、終点はp 3です。2 つの制御点はp 1とp 2です。
メソッドの...AddQuadCurveTo..
場合:
上記と同じですが、コントロール ポイントは 1 つだけです。
メソッドの...AddArcTo..
場合:
コントロール ポイントを使用しないでください。代わりに固定半径を使用します。
...必要に応じて、UIBezierPath でパスを作成することもできます
addCurveToPoint:controlPoint1:controlPoint2:
またはのような UIBezier パスにも同様のメソッドがありますaddCurveToPoint:controlPoint1:controlPoint2:
。その後、ベジエ パスを CGPath に変換できますが、Core Graphics に精通している場合は必要ありません。
を作成して、UIBezierPath
そのCGPath
プロパティを取得できます。
このパスを作成する方法は、ニーズによって異なります。メソッド+(UIBezierPath *) bezierPathWithOvalInRect:
は に最もよく似ているように見えますCGPathAddElipseInRect
。
その塗りつぶしと線のメソッドを使用して、現在のコンテキストに描画することもできます。