2008-09-16 13 views
12

Thư viện CoreGraphics của Apple định nghĩa hai hàm để mô tả một cung.CGPathAddArc vs CGPathAddArcToPoint

  • CGPathAddArc thêm hình cung dựa trên điểm giữa, bán kính và cặp góc.
  • CGPathAddArcToPoint thêm một cung dựa trên bán kính và một cặp đường tiếp tuyến.

Chi tiết được giải thích trong the CGPath API reference. Tại sao lại có hai chức năng? Tiện lợi đơn giản? Là một trong những hiệu quả hơn khác? Là một trong những định nghĩa về mặt khác?

Trả lời

8

Trường hợp cũ giúp bạn trở thành một phần của vòng kết nối (thực sự là xấp xỉ một vòng tròn), trong khi thứ hai cho thấy thực tế rằng bạn đang tạo một con đường Bézier. Tùy thuộc vào những gì bạn đang thực sự vẽ, một hoặc khác có thể thuận tiện hơn. Bạn thực sự có thể xem xét cả hai tiện ích cho CGPathAddCurveToPoint.

+0

Bạn có ngụ ý ngụ ý rằng CGPathAddArcToPoint có thể vẽ một đường cong không tròn? Tôi nghĩ tất cả các cung là những phần của một vòng tròn. – benzado

+0

Một vòng tròn không thể được mô tả chính xác bằng một đường cong Bezier. –

63

CGContextAddArc thực hiện điều này:

addArc

nơi dòng màu đỏ là những gì sẽ được rút ra, sA là startAngle, EA là endAngle, r là radius, và x và y là xy. Nếu bạn có một điểm trước đó, hàm sẽ chạy từ điểm này đến điểm bắt đầu của vòng cung (trừ khi bạn cẩn thận dòng này sẽ không đi theo cùng hướng với cung tròn).

CGContextAddArcToPoint công trình như thế này:

addArc

đâu P1 là điểm hiện tại của con đường, x1, x2, y1, trận đấu y2 chức năng x1, x2, y1, y2 và r là radius . Vòng cung sẽ bắt đầu theo cùng hướng với đường thẳng giữa điểm hiện tại và (x1, y1) và kết thúc theo hướng giữa (x1, y1)(x2, y2). nó sẽ không xếp hàng tới (x2, y2) Nó sẽ dừng ở cuối vòng tròn.

+0

Tuyệt vời! Tôi đặt cược đây không phải là hai chỉ. Tôi có thể tìm thấy sơ đồ cho các API khác ở đâu? – CopperCash

+3

@CopperCash Xin lỗi bạn đã thất vọng, nhưng đây là hai điều duy nhất tôi biết và tôi đã vẽ chúng bằng mã (chủ yếu là các nhãn và điểm được thêm vào với trình chỉnh sửa hình ảnh). –

Các vấn đề liên quan