2014-05-13 45 views
1

我已經使用石英-2d渲染了一些基本形狀。我遇到了兩種方法來畫線。首先是使用UIGraphicsGetCurrentContext()來獲取上下文,然後使用CGContextAddLineToPoint來繪製線條。UIBezierPath中的CGContextAddLineToPoint和addLineToPoint函數有什麼區別?

而另一種方法是定義一個UIBezierPath對象,並使用其功能addLineToPoint

[bezierPath addLineToPoint:CGPointMake(10, 10)]; 

繪圖,然後我不得不bezierPath添加到使用CGContextAddPath上下文。

所以我想知道這兩種方法之間的區別,因爲兩者都只用於繪製一條線。這兩者之間是否存在性能問題?在哪種情況下哪種方法更好。

回答

2

UIBezierPathUIKit中的一個對象,它允許您使用一組函數將特定曲線與控制點混合在一起,但也可以與法線混合使用。

作爲UIKit中的對象,您無法使用CGContextAddLineToPoint,但無論如何,最後您需要在上下文中添加路徑CGContextAddPath

CGContexAddLineToPoint相反,您可以直接在上下文上繪製

所以我的建議是如果你沒有什麼特別的原因(比如有着不同控制點的驚人曲線),使用最後一種方式。否則,請使用UIBezierPath

2

CGContextAdd..函數是較低級別的C Quartz2D API,橋接在CGContextCGPathRef實例之間。當你想畫東西時,你使用CGContext,而CGPathRef是管理幾何形狀的結構。

在另一方面,UIBezierPath是一個Objective-C UIKit類迴繞CGPath,並且還提供了一些橋CGContext功能,例如與setFillsetStrokefillstroke方法。

將兩種方法混合是完全安全的,但它肯定CGContext爲您提供了更多工具。性能和內存對直接CGContext調用更好,但在99%的情況下,性能差異絕對可以忽略不計。

相關問題