我使用quartz-2d渲染了一些基本形状。我遇到了两种画线的方法。首先是使用UIGraphicsGetCurrentContext()
获取上下文,然后使用CGContextAddLineToPoint
绘制线条。
另一种方法是定义一个UIBezierPath
对象并使用其函数addLineToPoint
绘制
[bezierPath addLineToPoint:CGPointMake(10, 10)];
然后我必须使用CGContextAddPath
将bezierPath添加到上下文中。
所以我想知道这两种方法之间的区别,因为它们都只用于绘制一条线。这两者之间是否存在性能问题?在什么情况下哪种方法更好。
答案 0 :(得分:2)
UIBezierPath
是来自UIKit
的对象,允许您使用一组函数将特定曲线与控制点混合,但也使用法线。
作为UIKit
中的对象,您无法使用CGContextAddLineToPoint
,但无论如何,您需要在CGContextAddPath
的上下文中添加路径。
使用CGContexAddLineToPoint
而不是直接在上下文上绘制。
所以我的建议是使用最后一种方式如果你没有特别的原因(比如具有不同控制点的惊人曲线)。否则,请使用UIBezierPath
。
答案 1 :(得分:2)
CGContextAdd..
函数是低级C Quartz2D API,它在CGContext
和CGPathRef
个实例之间架起桥梁。当您想要绘制某些内容时,可以使用CGContext
,而CGPathRef
是管理几何形状的结构。
另一方面,UIBezierPath
是一个包含CGPath的Objective-C UIKit
类,并且还为CGContext
函数提供了一些桥接,例如setFill
,setStroke
,fill
或stroke
方法。
混合这两种方法是完全安全的,但它确保CGContext为您提供更多工具。直接CGContext调用可以提高性能和内存,但99%的情况下性能差异绝对可以忽略不计。