我开始学习OSX编程并试图通过编程绘制一个图表。我发现有些示例使用CGPathRef(核心图形?),有些则使用NSBezierPath。我不了解这两种方法的区别。什么时候该使用哪一种,为什么?你能帮忙吗?谢谢!
我开始学习OSX编程并试图通过编程绘制一个图表。我发现有些示例使用CGPathRef(核心图形?),有些则使用NSBezierPath。我不了解这两种方法的区别。什么时候该使用哪一种,为什么?你能帮忙吗?谢谢!
NSBezierPath
可以视作 CGPath
的一个封装(wrapper),如果你正在处理视图(NSView
)而不是直接处理图形上下文(CGContext
), 那么使用NSBezierPath
将会更加方便。使用NSBezierPath
可以在一个实例中指定路径和其绘制属性(颜色、线段端点等) ,而如果您使用CGPath
, 您需要单独创建并添加路径、颜色、线段端点等,然后将值设置到上下文中(这就是NSBezierPath
为您完成的工作)。
因此,它们是相似的,但当您在视图中进行绘制时,NSBezierPath
更为优化,而CGPath
则提供了图形上下文的全部原始功能。
NSBezierPath(以及其 iOS 对应物 UIBezierPath)是 Objective-C 对象,它们为您封装了 CGPath API 的大部分功能。
这意味着您可以主要使用 Objective-C 而不是 Core Graphics C。最大的区别在于 C 版本需要手动内存管理并且可能更加冗长。
您可以使用任何一个,除非其他函数或方法需要特定的版本。
但是学习 Core Graphics 有助于理解 Cocoa 绘图中发生的实际情况。