虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > IOS 之 Quartz 2D 绘图(上)

IOS 之 Quartz 2D 绘图(上)
类别:IOS编程/Objective-C   作者:码皇   来源:黄飞的博客专栏     点击:

Quartz 2D 是一个二维绘图引擎,同时支持 iOS 和 Mac 系统。其 API 采用 C 语言编写,来自 Core Graphics 框架,主要作用是绘图,可以绘制三角形、四边形、图片和文字等。下面就 Quartz 2D 的相关概念做简要解释并以实例分析。

Quartz 2D 是一个二维绘图引擎,同时支持 iOS 和 Mac 系统。其 API 采用 C 语言编写,来自 Core Graphics 框架,主要作用是绘图,可以绘制三角形、四边形、图片和文字等。下面就 Quartz 2D 的相关概念做简要解释并以实例分析。

1.图形上下文(Graphics Context)
所谓Graphics Context,其实就是表示了一个绘制目标,也就是你打算绘制的地方,它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息。Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等.

2.drawRect:方法
实现 drawRect: 方法才能绘图到 view 上,因为在 drawRect: 方法中才能取得跟 view 相关联的图形上下文。在drawRect:方法中取得上下文后,就可以绘制东西到view上。

3.图形上下文栈
在获取图形上下文之后,通过 CGContextSaveGState(ctx); 方法,把当前获取的上下文拷贝一份,保存一份最纯洁的图形上下文。
在画第二条线之前,使用CGContextRestoreGState(ctx);方法,还原开始的时候保存的那份最纯洁的图形上下文。
在栈里保存了几次,那么就可以取几次(比如不能保存了1次,取两次,在取第二次的时候,栈里为空会直接挂掉)。

4.利用Quartz2D绘制东西到view上(步骤)
注:此处主要针对UIView的Graphics Context进行绘制
(1)新建一个类,继承自UIView;
(2)实现- (void)drawRect:(CGRect)rect方法;
(3)在这个方法中取得跟当前view相关联的图形上下文;
(4)绘制相应的图形内容;
(5)利用图形上下文将绘制的所有内容渲染显示到view上面。

以画线段为例对上面所述内容进行代码详解(DrawLine为继承自 UIView 的类):
这里写图片描述

图形上下文栈的代码及运行结果图解:
这里写图片描述
在恢复原先最“纯净”的图形上下文之后,直角线段的各种属性都为系统默认。由此可体会出图形上下文栈的作用。

相关路径拼接、线条属性的函数都已在代码注释中详细说明,在此不再赘述。下次,我们将一起探讨学习使用 Quartz 2D 绘出各种各样的图形,敬请期待《IOS 之 Quartz 2D 绘图(下)》。

相关热词搜索: