iOS 开发 Quartz 2D+ UIBezierPath绘图大全详解
Quartz 2D 使用大全结构图
UIKIt UIBezierPath Core Graphics OpenGL ES Quartz2D的区别和联系 UIKIt:UIKit中的控件都是基于Core Graphics实现的
UIBezierPath:UIBezierPath属于UIKit,它是苹果对复杂的Core Graphics进行的封装,方便我们用OC语言进行简单的绘图
Core Graphics:是一套基于C语言的API,支持向量图形,线、形状、图案、路径、剃度、位图图像和pdf 内容的绘制。
OpenGL ES:OpenGL是由SGI公司开发的一套3D图形软件接口标准,它只是一个标准,具体实现由机械制造商来完成,所以不同的机器他的效果可能是完全不一样的。OpenGL-ES版本,主要是应对嵌入式环境和应用的要求,应该说在高效完成2D/3D界面的同时,达到了降低功耗的效果。
Quartz2D:quartz是一个通用的术语,用于描述在IOS整个媒体层用到的多种技术 包括图形、动画、音频、适配。Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用到这组API
Core Graphics框架
绘图我们要用到Core Graphics框架,Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析。
Core Graphics API所有的操作都在一个上下文中进行。所以在绘图之前需要获取该上下文并传入执行渲染的函数中。介绍两种最为常用的获取方法。
第一种方法就是创建一个图片类型的上下文。调用UIGraphicsBeginImageContextWithOptions函数就可获得用来处理图片的图形上下文。利用该上下文,你就可以在其上进行绘图,并生成图片。调用
UIGraphicsGetImageFromCurrentImageContext函数可从当前上下文中获取一个UIImage对象。记住在你所有的绘图操作后别忘了调用UIGraphicsEndImageContext函数关闭图形上下文。
第二种方法是利用cocoa为你生成的图形上下文。当你子类化了一个UIView并实现了自己的drawRect:方法后,一旦drawRect:方法被调用,Cocoa就会为你创建一个图形上下文,此时你对图形上下文的所有绘图操作都会显示在UIView上。
什么是Quartz2D绘图引擎
? ? ? ?
Quartz 2D是?个二维绘图引擎,iOS中?部分控件的内容都是通过Quartz 2D画出来的。 Quartz 2D是纯C语言的
Quartz 2D的API来自于CoreGraphics框架 数据类型和函数基本都是CG作为前缀
o CGContextRef o CGPathRef
o CGContextStrokePath(ctx)
Quartz 2D能完成的工作
? ? ? ? ? ?
绘制图形 : 线条\\三角形\\矩形\\圆\\弧形 绘制文字
绘制\\生成图片(图像) 读取\\生成PDF 截图\\裁剪图片 自定义UI控件
Quartz2D绘图有以下两种方式
注意: UIBezierPath 对象可以独立使用, 无需手动获取“图形上下文”对象,此处为了更好的理解“图形上下文对象”所以暂时还是采用手动获取“图形上下文”对象的方式来绘图。