CGPathAddArc vs CGPathAddArcToPoint
问题描述:
Apple的CoreGraphics库定义了两个用于描述弧的函数。CGPathAddArc vs CGPathAddArcToPoint
- CGPathAddArc根据中心点,半径和一对角度添加弧。
- CGPathAddArcToPoint根据半径和一对切线添加弧。
详细说明请参见the CGPath API reference。为什么两个功能?简单的方便?比另一个更有效率吗?一个是用另一个来定义的吗?
答
前者让你获得圆的一部分(实际上是一个近似值),而后者则暴露了你正在创建贝塞尔路径的事实。根据您实际绘制的内容,其中一个或另一个可能更方便。你可以真的考虑CGPathAddCurveToPoint的两个方便之处。
答
CGContextAddArc
做到这一点:
其中红色线是什么将被吸引,SA是startAngle
,EA是endAngle
,r为radius
,x和y是x
和y
。如果你有一个先前的点,该功能将从这一点开始到弧的起点(除非你小心这条线不会与弧相同)。
CGContextAddArcToPoint
是这样工作的:
其中P1是道路,X1,X2,Y1,Y2匹配功能x1
,x2
,y1
,y2
和r的当前点是radius
。该弧线将以与当前点和(x1, y1)
之间的线相同的方向开始,并在(x1, y1)
和(x2, y2)
之间的方向结束。它不会行到(x2, y2)
它会停在圆圈的尽头。
您的意思是暗示CGPathAddArcToPoint可以绘制一条不是圆形的曲线吗?我认为所有的弧都是圆的一部分。 – benzado 2008-09-17 19:32:12
圆形不能用贝塞尔曲线精确描述。 – 2008-10-26 06:35:48