Quartz Core,Core Graphics和Quartz 2D有什么区别?


71

我想知道是否有人可以准确区分这些?据我了解,Core Graphics只是一个“框架包”,其中包含Quartz Core和Quartz 2D。但是我不确定Quartz 2D是否真的是Quartz Core?也许有人可以在那里画线?造成这些差异的原因是什么?

查看文档时,我看到Quartz Core仅列出了所有Core Animation素材。那么石英核心==核心动画?

Answers:


37

从《Quartz 2D编程指南》中

Quartz 2D API是Core Graphics框架的一部分,因此您可能会看到Quartz被称为Core Graphics或简称为CG。

在Mac / iPhone上参考二维绘图时,即使在技术上不正确,我也倾向于交替使用Quartz和Core Graphics。

iPhone上的石英核心框架包含的类和核心动画支持元素,并且还包含用于核心形象的项目。


91

Quartz 2D是Core Graphics框架的API,可实现绘图。
Quartz Core是一个框架,其中包含用于动画和图像处理的API。


Quartz框架及其API

CoreGraphics.framework

  • Quartz 2D API管理图形上下文并实现绘图。
  • Quartz Services API提供了对窗口服务器的低级访问。这包括显示硬件,分辨率,刷新率等。

QuartzCore.framework

  • 核心动画:Objective-C API做2D动画。
  • 核心图像:图像和视频处理(滤镜,扭曲,过渡)。iOS 5

Quartz.framework仅OS X

这三个框架都在下面使用OpenGL,因为iOS或OS X中的所有绘图都在某个时候通过OpenGL。有关详细信息,请参见“ Mac OS X技术概述”的“媒体层框架”部分。

您可能听说过的其他“石英”技术:

  • Quartz Extreme:Quartz Composer的GPU加速。
  • QuartzGL(又名“ Quartz 2D Extreme”):Quartz 2D的GPU加速。

这些是GPU渲染的内部实现,而不是API。他们决定是在CPU中创建窗口缓冲区,仅使用OpenGL作为纹理上传(默认设置),还是使用OpenGL完成整个渲染,但这并不总是会提高性能。您可以使用QuartzGLEnable Info.plist设置在两者之间切换。有关说明,请参阅John Siracusa对Mac OS X 10.4 Tiger的评论,第1314页。

“ Quartz”和“ Core”是随机散布在框架和API上的营销名称。如果他们想创建一个令人困惑的命名混乱,他们就成功了。


1
这是另一篇完成的文章:stackoverflow.com/a/9248627/1953914
hashier 2014年

@jano,对此评论+1:“ Quartz”和“ Core”是随机散布在框架和API上的营销名称。如果他们想创建一个令人困惑的命名混乱,他们就成功了。
muzz

6

但是请注意,默认情况下,新的单视图应用程序将链接CoreGraphics框架,但不会链接QuartzCore。因此,如果您进行任何操作,CAEAGLLayer例如,您可能会很快收到“未知对象”错误。


真正。特别是在.layerUIView上使用属性时。例如,要更改corner radius您需要导入QuartzCore框架。
Abhishek Bedi 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.