Core Graphic简介
Core Graphic是基于Quartz绘制引擎的框架。它提供了低级别的,轻量级的二维渲染与无与伦比的输出保真度。用这个框架来处理基于路径的绘制、变换、色彩管理、屏幕绘制,图案,渐变和阴影的图像数据管理、图像创作、图像掩模,以及PDF文档的创建、显示和解析。
Apple提供了相关类库来支持图片处理,Core Image,Core Graphic,以及第三方类库GPUImage。Core Image最好的部分在于它对比操作原始像素或Core Graphics有着极好的性能。这个库使用CPU和GPU混合处理提供接近实时的性能。GPUImage是一个活跃的iOS上基于GPU的图像处理库。其隐藏了在iOS中所有需要使用OpenGL ES的复杂的代码,并用极其简单的接口以很快的速度处理图像,GPUImage的性能甚至在很多时候击败了Core Image。
Core Graphics 和Quartz 2D的区别
quartz是一个通用的术语,用于描述在IOS和OS整个媒体层用到的多种技术 包括图形、动画、音频、适配。
Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用到这组API
Quartz Core 专指Core Animation用到的动画相关的库、API和类
图形上下文
Core Graphics 使用图形上下文进行工作,这个上下文的作用像画家的画布一样。
在图形上下文之外是无法绘图的,我们可以自己创建一个上下文,但是性能和内存的使用上,效率是非常低得。
我们可以通过派生一个UIView的子类,获得它的上下文。在UIView中调用drawRect:方法时,会自动准备好一个图形上下文,可以通过调用
UIGraphicsGetCurrentContext()来获取。 因为它是运行期间绘制图片,我们可以动态的做一些额外的操作
图形上下文栈可以把图形上下文的当前状态保存下来,并在执行一些动作后再次恢复回来。 CGContextSaveGState(); CGContextStoreGState();
绘制图形往往通过drawRect方法。drawRect:是系统的方法,不要从代码里面直接调用 drawRect:,而应该使用setNeedsDisplay重绘。
Core Graphic的应用
Core Graphic主要使用UIBezierPath和Core Graphic来绘制图形,UIBezierPath是Core Graphic关于path的一个封装,可以方便的创建基本图形。