初探UIKit与Quartz 2D绘画技术

时间:2023-02-06 23:47:49

转载自:http://www.jianshu.com/p/f7768af134b4



介绍

iOS中绘画技术主要有UIKit、Quartz 2D、Core Animation和OpenGL ES。那么他们的架构是这样子的:Graphics hardware->OpenGL/Core Graphics ->Core Animation->UIKit,UIKit位于最高层,硬件位于最底层,中间的部分是绘画中一些具体技术。

UIKit

高级别图形接口,API急于Swif与OC。能够访问绘画、动画、字体、图片等

Quartz 2D

iOS和Mac OS X 环境下的2D绘画引擎。设计内容包括基于路径的绘画、透明度、遮盖、阴影、透明层、颜色管理、防锯齿、PDF相关处理。又被称为Core Graphics,缩写为CG,API都是基于C语言。

Core Animation

动画实现技术

OpenGL ES

主要针对嵌入式设备的简化版本,可以绘制高性能的2D、3D图形。

视图绘制周期

无论使用哪种技术,绘制都发生在UIView对象的区域内。

drawRect:绘制视图,在里面添加UIKit、Core Animation等技术

setNeedsDisplay:重新绘制整个视图

setNeedsDisplayInRect:设置视图或者视图的部分区域。

原则上尽量不要绘制视图的全部,以减少重新绘制的开销。

UIKit绘制:

UIRectFill(CGRect rect):填充矩形函数

UIRectFrame(CGRect rect):填充描边函数

-drawAtPoint:绘制制定点

-drawInRect:将图片绘制在制定的矩形中

-drawAsPatternInRect:在制定举行里面平铺绘制图片,如果大小超出范围与-drawAtPoint方法类似,当范围小于制定矩形时会出现平铺

-drawAtPoint:withAttributes:在文本指定点绘制

-drawInRect:withAttributes:文本在指定矩形内绘制

Quartz绘制

图形上下文:

当绘制系统执行后,绘制命令所需要的信息,定义了包含各种参数,如绘制使用的颜色、裁切区域、线段的宽度及风格、字体、合成选项等。

Quartz路径:

用来描述矩形、圆及其想要画的2D几何图形。通过路径可以对图形进行描边、填充和描边填充处理。CG的四个基本图元:点、直线、弧、贝赛尔曲线。

Quartz坐标变换:

坐标系:Quartz的坐标系与UIKit坐标系不同,前者原点在左下角,后者时左上角。

2D图形的基本变化:平移、缩放、旋转

CTM变化矩阵:CTM为当前变换矩阵(current transformation matrix)。

仿射变换(affine):可以进行重用变换,经过多次变换(多次矩阵相乘),每一种变换都可以使用矩阵来表示。