学习笔记——使用Core Graphics绘图

以下为《精通iOS开发》的一些学习笔记。


对于有些可视化元素来说,仅仅使用UIKit框架内置的组件式无法完全实现的。iOS内置的Core Graphics框架,用于进行一系列的各类绘图工作。

 

16.1  Quartz 2D基础概念

      Core Graphics 中关键部分是一个名为Quartz 2D的API集合,它包含了各种函数、数据类型以及对象,能让你在内存中直接绘制视图和图像。

        绘画模式:Quartz 2D将正在进行绘制的视图或图像视作一个虚拟的画布。

        硬件加速,尽管许多Quartz 2D函数会在绘画时利用硬件加速,但无法保证在Quartz 2D中执行的操作都会得到加速。

 

16.2  Quartz 2D绘图方法

        使用Quartz 2D绘制图形时,通常需要向图形所在的视图中添加绘画代码。比如一个UIView的子类,向该类的drawRect:方法中添加对Quartz函数的调用。

 

16.2.1  Quartz2D图形环境

 

        与Core Graphics 中其他部分一样,Quartz的绘制是在图形环境中进行的,通常简称它为环境(context)。

每个视图都有相关的环境,需要先获取当前环境,通过它可以调用各类Quartz绘图函数,由环境负责将图形绘制在视图上。可以认为环境是一种画布。可以用以下语句来获取它。

CGContextRef context = UIGraphicsGetCurrentContext();

 

Stroke 这个单词有意思,在iOS里指的是笔刷,用于绘制直线以及形状的轮廓。

 

可以认为,环境是通过一支看不见的画笔来绘制线条的,随着绘制命令的执行,画笔的移动会形成一段路径。当调用CGContextMoveToPoint()时,会将虚拟画笔移动到指定的位置,事实上这样做并不会执行任何绘图操作。无论接下来执行何种操作,它都将画笔所移动到的点为参照物执行自己的工作。比如你将画笔移动到(10,10)的点,然后画一条线到(20, 20)这时(20,20)会成为画笔的新位置。

在Core Graphics 中绘图时,你并没有绘制任何实际可见的内容,创建的对象不包含颜色或其他可见的内容,就像是用隐形墨水在书写,在执行某些使其可见的操作之前,路径是看不到的。因此下一步是调用CGContexStrokePath()函数来告诉Quartz 来绘制路径。

 

16.2.2  坐标系统

左上角是原点,区别于OpenGL或OS X版本的Quartz

 

理解几个CGPoint、CGSize、CGRect概念,点、尺寸、矩形。

 

16.2.3  指定颜色

不能在Core Graphics函数调用中直接使用UIColor对象,因为UIColor仅仅是CGColor的一个容器。可以使用以下代码来获取一个CGColor的引用:

CGContextSetStrokeColorWithColor(context,[UIColor redColor].CGColor);

1、iOS设备上的色彩理论

概念:色彩模型、色彩空间

CGFloat 限定变量,值只能在0.0-1.0之间选取。

RGB色彩模型 、

RYB色彩模型、

RGBA色彩模型

 

2、其他色彩模型

色相、饱和度、色明度 (HSV)

……

 

3、颜色便利方法

UIColor提供了许多便利方法,可以放回被初始化为特定颜色的UIColor对象,在上一个代码示例中,我们使用redColor方法将颜色初始化为红色。这种便利方法创建的UIColor实例对象恰好大部分采用的是RGBA色彩模型。

 

16.2.4  在环境中绘制图像

通过Quartz可以在环境中直接绘制图像,这是OC类UIImage的另一种用法,可以使用它作为Core Graphics中数据结构的代替方式。

 

16.2.5 绘制形状:多边形、直线和曲线

只要一个Quartz函数,包治百病,就是这么犀利!

你可能感兴趣的:(graphics,ios开发,core)