简介:
Core Graphics是Quartz 2D的一个高级绘图引擎,常用与iOS,tvOS,macOS的图形绘制应用开发。Core Graphics是对底层C语言的一个简单封装,其中提供大量的低层次,轻量级的2D渲染API。
Core GraphicsAPI简单易于使用,并且提供了强大的功能访问,如透明层,基于路径的涂层绘制,屏幕外呈现,高级色彩管理,抗锯齿已经PDF文档的生成解析操作
DrawModel:绘制模型
Quartz 2D使用绘制模型进行成像,Quartz 2D中十分注重层次的概念,你可以理解成通过Quartz 2D进行绘制的内容其实是一层层内容叠加到绘制画板上去的,其结果和我们进行叠加的顺序具有决定性的结果。一个小例子去解释Quartz 2D其进行叠加顺序影响
例子1:
其结果的展示为首先在画板上绘制蓝色的内容,绘制成功后去在蓝色的内容上进行绘制红色内容并且红色内容为非透明的,所以其结果则是上图的展现形式
例子2:
此图的显示结果是先绘制不透明的红色内容区域,后在红色区域上进行叠加的绘制蓝色内容从此可以看出不同的叠加顺序展现出不同的绘制结果
图形绘制上下文:CGContext
CGContext是一个不透明的结构体数据类型,其中封装了对图形进行绘制操作和用于输出到打印设备或者是展示设备的一系列API函数。通过不同的API对其绘制结果进行不同的输出展示。可以展示与打印机进行打印,PDF文档进行展示,layer层进行渲染,创建bitmap位图以及填充在window上。
图形上下文的种类
位图图形上下文、位图图形上下文使用RGB颜色、CMYK颜色或者是灰度图进行绘制并以位图模式进行输出。
PDF图形上下文、PDF图形上下文回把最终的绘制结果保存为命令序列。位图可以理解成是仅有一张bitmap的PDF图形
窗口图形上下文、窗口图形上下文用于把绘制内容输出到window窗口上
图层图形上下文、图层图形上下文把绘制内容输出到layer层上,也是最常用的绘制上下文
打印框架图形上下文、 用于打印机操作
Core Graphics的不透明数据类型
CGPath:用于路径描述
CGImage:用于位图图像
CGLayer: 用于表示绘图层,例如重复绘图,屏幕外绘图等等
CGPattern:重复绘图
CGShading、CGGradient:用于梯度绘图
CGFunction:渐变色相关数据类型
CGColor、CGColorSplace:绘图颜色机制
CGImageSource、CGImageDestination:数据移动操作
CGFont:绘制文本
CGPDFDictionary、CGPDFObject、CGPDFPage、CGPDFStream、CGPDFString、CGPDFArray:PDF数据访问
CGPDFScanner、CGPDFContentStream:解析PDF数据
绘图坐标系
绘图坐标系独立于设备,使用不同的转换矩阵把绘制内容进行映射到不同的设备上。通常通过当前转换矩阵进行不同坐标系之间的转换,当前转换矩阵称之为仿射变换
绘图坐标系使用(x,y)坐标点进行表示一个绘制点,其原点位于页面的左下角,在iOS中uikit使用的是经过修改后的坐标系。因此在大多数uikit框架下的子类绘制是不需要对坐标系进行约定匹配的!