3

CGLayer、CALayer和CGContext有什么区别?

4

2 回答 2

4

所以,正如文档所说

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 对象)无关。

来自Core Graphics frameworkCGContext

图形上下文包含绘图参数和将页面上的绘图渲染到目标所需的所有设备特定信息,无论目标是应用程序中的窗口、位图图像、PDF 文档还是打印机。

有关更多信息,请查看https://developer.apple.com/reference/coregraphics/1666363-cgcontext

于 2016-09-26T05:11:06.177 回答
1

CGLayer中的CG代表核心图形,CALayer中的CA代表核心动画。这些确实令人困惑。

CGLayer 由提供,CoreGraphics.framework主要用于绘制各种几何形状的矢量对象,如圆形、矩形、线等。这为 CPU 渲染 IIRC 提供了高性能图形支持。

CALayer(由 Quartz 框架提供)仅用于“视图”中的内容动画。这是基于 OpenGL 的,主要使用 GPU。

CGContext(再次由 Quartz 框架提供) - 此内容直接从 doc 复制

图形上下文包含绘图参数和将页面上的绘画渲染到目标所需的所有设备特定信息,无论目标是应用程序中的窗口、位图图像、PDF 文档还是打印机。您可以通过使用 Quartz 图形上下文创建函数或使用 Carbon、Cocoa 或 Printing 框架中提供的高级函数来获取图形上下文。Quartz 为各种风格的 Quartz 图形上下文提供创建功能,包括位图图像和 PDF。Cocoa 框架提供了获取窗口图形上下文的函数。打印框架提供了获取适合目标打印机的图形上下文的函数。

于 2016-09-26T05:19:53.390 回答