你的位置:首页 > 软件开发 > 操作系统 > Quartz2D

Quartz2D

发布时间:2015-09-21 15:00:14
一、Quartz2D概述Quartz2D是一个二维绘图引擎,同时支持Mac和iOS系统Quartz2D能绘制图形、绘制文字、绘制图片、生成PDF、裁剪图片等,还可以用来自定义UI控件。例如画板应用、手势解锁功能、图形报表等都是用Quartz2D实现的。1. 图形上下文(Graph ...

一、Quartz2D概述

Quartz2D是一个二维绘图引擎,同时支持Mac和iOS系统

Quartz2D能绘制图形、绘制文字、绘制图片、生成PDF、裁剪图片等,还可以用来自定义UI控件。

例如画板应用、手势解锁功能、图形报表等都是用Quartz2D实现的。

1. 图形上下文(Graphics Context)

图形上下文(Graphics Context)是一个CGContextRef类型的数据,它用来保存绘图信息、绘图状态和决定绘制的输出目标(输出目标可以是PDF文件、Bitmap或者显示器的窗口上)。

相同的一套绘图序列,指定不同的图形上下文可将相同的图像绘制到不同的目标上。

Quartz2D提供了一下几种类型的Graphics Context:

  • Bitmap Graphics Context
  • PDF Graphics Context
  • Window Graphics Context
  • Layer Graphics Context
  • Printer Graphics Context

2. drawRect:方法

当view第一次显示到屏幕上时(被加到UIWindow上显示出来)就会调用drawRect:,调用view的setNeedDisplay或者setNeedDisplayInRect:时也会调用drawRect:

3. drawRect:中取得上下文

在drawRect:方法中取得上下文后,就可以绘制图形到view上面了。view内部有个layer属性,drawRect:方法中取得的是一个Layer Graphics Context,因此绘制的图形其实是绘制到view的layer上去了。

view之所以能显示东西,是因为它内部有layer。

4. Quartz2D的内存管理

使用含有“Create”或“Copy”的函数创建的对象,使用完后必须释放,否则将导致内存泄露,使用不含“Create”或“Copy”的函数获取的对象,则不需要释放。

如果retain了一个对象,不再使用时也需要将其release掉。

可以使用Quartz2D的函数来指定retain和release一个对象,例如,如果创建了一个CGColorSpace对象,则使用函数CGColorSpaceRetain和CGColorSpaceRelease来retain和release对象。

也可以使用Core Foundation的CFRetain和CFRelease。注意不能传递NULL值给这些函数。

 

二、代码

1. 画三角形

 1 /** 2  * 画三角形 3 */ 4 void drawTriangle() 5 { 6   // 1.获得图形上下文 7   CGContextRef contextRef = UIGraphicsGetCurrentContext(); 8    9   // 2.拼接图形路径10   // 设置一个起点11   CGContextMoveToPoint(contextRef, 100, 100);12   // 添加一条线段到(100,100)13   CGContextAddLineToPoint(contextRef, 200, 200);14   // 添加一条线段到(150,40)15   CGContextAddLineToPoint(contextRef, 150, 40);16   // 关闭路径(连接起点和终点)17   CGContextClosePath(contextRef);18   19   // 3.渲染显示到View上面20   CGContextStrokePath(contextRef);21 }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Quartz2D

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录