UIBezierPath中CGContextAddLineToPoint和addLineToPoint函数有什么区别?

时间:2014-05-13 12:38:44

标签: ios core-graphics quartz-2d uibezierpath

我使用quartz-2d渲染了一些基本形状。我遇到了两种画线的方法。首先是使用UIGraphicsGetCurrentContext()获取上下文,然后使用CGContextAddLineToPoint绘制线条。

另一种方法是定义一个UIBezierPath对象并使用其函数addLineToPoint绘制

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

然后我必须使用CGContextAddPath将bezierPath添加到上下文中。

所以我想知道这两种方法之间的区别,因为它们都只用于绘制一条线。这两者之间是否存在性能问题?在什么情况下哪种方法更好。

2 个答案:

答案 0 :(得分:2)

UIBezierPath是来自UIKit的对象,允许您使用一组函数将特定曲线与控制点混合,但也使用法线。

作为UIKit中的对象,您无法使用CGContextAddLineToPoint,但无论如何,您需要在CGContextAddPath的上下文中添加路径。

使用CGContexAddLineToPoint而不是直接在上下文上绘制

所以我的建议是使用最后一种方式如果你没有特别的原因(比如具有不同控制点的惊人曲线)。否则,请使用UIBezierPath

答案 1 :(得分:2)

CGContextAdd..函数是低级C Quartz2D API,它在CGContextCGPathRef个实例之间架起桥梁。当您想要绘制某些内容时,可以使用CGContext,而CGPathRef是管理几何形状的结构。

另一方面,UIBezierPath是一个包含CGPath的Objective-C UIKit类,并且还为CGContext函数提供了一些桥接,例如setFillsetStrokefillstroke方法。

混合这两种方法是完全安全的,但它确保CGContext为您提供更多工具。直接CGContext调用可以提高性能和内存,但99%的情况下性能差异绝对可以忽略不计。