【发布时间】:2017-02-03 08:04:31
【问题描述】:
CGLayer、CALayer、CGContext有什么区别?
【问题讨论】:
标签: ios core-graphics calayer cgcontext cglayer
CGLayer、CALayer、CGContext有什么区别?
【问题讨论】:
标签: ios core-graphics calayer cgcontext cglayer
CGLayer 中的 CG 代表核心图形,CALayer 中的 CA 代表核心动画。 这些确实令人困惑。
CGLayer 由CoreGraphics.framework 提供,主要用于绘制圆形、矩形、直线等各种几何形状的矢量对象。这为 CPU 渲染 IIRC 提供了高性能图形支持。
CALayer(由 Quartz 框架提供)仅用于“视图”中的内容动画。这是基于 OpenGL 的,主要使用 GPU。
CGContext(再次由 Quartz 框架提供)- 此内容直接从 doc 复制
图形上下文包含绘图参数和所有设备特定的 将页面上的绘画渲染到目的地所需的信息, 目标是否是应用程序中的窗口、位图图像、 PDF 文档或打印机。您可以通过以下方式获取图形上下文 使用 Quartz 图形上下文创建函数或使用 Carbon、Cocoa 或 Printing 中提供的高级函数 构架。 Quartz 提供了各种风格的创建函数 Quartz 图形上下文,包括位图图像和 PDF。可可 框架提供了获取窗口图形上下文的函数。 打印框架提供了获取图形的函数 适合目标打印机的上下文。
【讨论】:
所以,正如文档所说
CALayer来自QuartzCore framework是
CALayer 类管理基于图像的内容并允许您 对该内容执行动画。层通常用于提供 视图的后备存储,但也可以在没有视图的情况下使用 显示内容。
更多信息请关注https://developer.apple.com/reference/quartzcore/calayer
CGLayer来自Core Graphics framework是
图层对象对于离屏绘图很有用,可以用在很多地方 与使用位图上下文的方式相同。实际上,一个 CGLayer 对象是比位图上下文更好的表示。使用 CGLayer 对象可以提高性能,尤其是当您需要 捕捉你反复标记的一幅画(使用相同的 比例因子和方向)
更多信息请关注https://developer.apple.com/reference/coregraphics/1666309-cglayer
注意 CGLayer 对象与核心动画层无关(CALayer 对象)。
CGContext来自Core Graphics framework是
图形上下文包含绘图参数和所有设备特定的 将页面上的绘画渲染到目的地所需的信息, 目标是否是应用程序中的窗口、位图图像、 PDF 文档或打印机。
更多信息请关注https://developer.apple.com/reference/coregraphics/1666363-cgcontext
【讨论】: