2008-09-16 31 views
12

Apple的CoreGraphics庫定義了兩個用於描述弧的函數。CGPathAddArc vs CGPathAddArcToPoint

  • CGPathAddArc根據中心點,半徑和一對角度添加弧。
  • CGPathAddArcToPoint根據半徑和一對切線添加弧。

詳細說明請參見the CGPath API reference。爲什麼兩個功能?簡單的方便?比另一個更有效率嗎?一個是用另一個來定義的嗎?

回答

8

前者讓你獲得圓的一部分(實際上是一個近似值),而後者則暴露了你正在創建貝塞爾路徑的事實。根據您實際繪製的內容,其中一個或另一個可能更方便。你可以真的考慮CGPathAddCurveToPoint的兩個方便之處。

+0

您的意思是暗示CGPathAddArcToPoint可以繪製一條不是圓形的曲線嗎?我認爲所有的弧都是圓的一部分。 – benzado 2008-09-17 19:32:12

+0

圓形不能用貝塞爾曲線精確描述。 – 2008-10-26 06:35:48

63

CGContextAddArc做到這一點:

addArc

其中紅色線是什麼將被吸引,SA是startAngle,EA是endAngle,r爲radius,x和y是xy。如果你有一個先前的點,該功能將從這一點開始到弧的起點(除非你小心這條線不會與弧相同)。

CGContextAddArcToPoint是這樣工作的:

addArc

其中P1是道路,X1,X2,Y1,Y2匹配功能x1x2y1y2和r的當前點是radius 。該弧線將以與當前點和(x1, y1)之間的線相同的方向開始,並在(x1, y1)(x2, y2)之間的方向結束。它不會行到(x2, y2)它會停在圓圈的盡頭。

相關問題