0

CGPathAddElipseInRect楕円を描くための代替手段はありますか? それはうまく機能しますが、急勾配の曲線が少ないカスタム楕円が必要です。他にできることはありますか?このパスをCTFramesetterCreateFramein で使用してCoreTextいるため、さまざまな形状内にテキストを描画できます。

4

2 に答える 2

2

いいえ...

...しかし、それはコアグラフィックスで行うことができます

のようなものを使用するか、CGPathAddQuadCurveToPoint楕円のカスタム パスを作成する必要があります。ベジエ パスのコントロール ポイントがどのように機能するかについてよく知らない場合は、ウィキペディアの記事を読むことから始めることができます。数学の部分を読む必要はありません。この画像 (ウィキペディアから) を見てください。CGPathAddCurveToPointCGPathAddArcToPoint

制御点のあるベジエ曲線 (ウィキペディアより)

メソッドの...AddCurveTo...場合:

現在のポイントはp 0で、終点はp 3です。2 つの制御点はp 1p 2です。

メソッドの...AddQuadCurveTo..場合:

上記と同じですが、コントロール ポイントは 1 つだけです。

メソッドの...AddArcTo..場合:

コントロール ポイントを使用しないでください。代わりに固定半径を使用します。


...必要に応じて、UIBezierPath でパスを作成することもできます

addCurveToPoint:controlPoint1:controlPoint2:またはのような UIBezier パスにも同様のメソッドがありますaddCurveToPoint:controlPoint1:controlPoint2:。その後、ベジエ パスを CGPath に変換できますが、Core Graphics に精通している場合は必要ありません。

于 2012-05-21T22:03:09.727 に答える
1

を作成して、UIBezierPathそのCGPathプロパティを取得できます。

このパスを作成する方法は、ニーズによって異なります。メソッド+(UIBezierPath *) bezierPathWithOvalInRect:は に最もよく似ているように見えますCGPathAddElipseInRect

その塗りつぶしと線のメソッドを使用して、現在のコンテキストに描画することもできます。

于 2012-05-21T13:47:58.937 に答える