我想知道,有没有CGPathAddElipseInRect画椭圆的替代方法?它工作得很好,但我需要一个曲线不那么陡峭的自定义椭圆。还有什么可以做的吗?我正在使用这个路径,CTFramesetterCreateFrame所以CoreText我可以在不同的形状内绘制文本。
2 回答
2
不...
...但它可以用 Core Graphics 来完成
您将不得不使用类似CGPathAddQuadCurveToPoint,CGPathAddCurveToPoint或CGPathAddArcToPoint为您的椭圆创建自定义路径。如果您不熟悉贝塞尔路径的控制点如何工作,您可以从阅读Wikipedia 文章开始。您无需阅读有关它的数学部分,只需查看此图像(来自 Wikipedia)。

...AddCurveTo...方法:
您的当前点是p 0,终点是p 3。两个控制点是p 1和p 2。
对于...AddQuadCurveTo..方法:
同上,但只有一个控制点。
对于...AddArcTo..方法:
不要使用控制点。而是使用固定半径。
...如果您愿意,也可以使用 UIBezierPath 创建路径
UIBezier 路径上也有类似的方法,例如addCurveToPoint:controlPoint1:controlPoint2:or addCurveToPoint:controlPoint1:controlPoint2:。然后可以将贝塞尔路径转换为 CGPath,但如果您熟悉 Core Graphics,则不需要这样做。
于 2012-05-21T22:03:09.727 回答
1
您可以创建一个UIBezierPath然后获取它的CGPath属性。
如何创建此路径将取决于您的需求。该方法+(UIBezierPath *) bezierPathWithOvalInRect:看起来最相似CGPathAddElipseInRect。
您还可以使用它的填充和描边方法绘制到当前上下文中。
于 2012-05-21T13:47:58.937 回答