Quartz2D的使用

2017-06-11  本文已影响0人  Coulson_Wang

一、图形上下文

一个CGContextRef类型的属性,用于:

  1. 保存绘图信息、绘图状态
  2. 决定绘制的输出目标

类型:

  1. Bitmap Graphics Context
  2. PDF Graphics Context
  3. Window Graphics Context
  4. Layer Graphics Context
  5. Printer Graphics Context

</br>

二、利用Quartz2D自定义控件的流程

前提条件:
  1. 确保具有图形上下文
  2. 图形上下文必须跟view相关联
步骤与流程:
  1. 新建一个类,继承自UIView
  2. 实现-(void)drawRect:(CGRect)rect方法(系统调用该方法会自动创建一个与View相关联的上下文),在该方法中
  3. 取得跟当前view相关联的图形上下文
  4. 绘制相应的图形内容
  5. 利用图形上下文将绘制的内容渲染显示到view上面

</br>

三、drawRect方法

调用时机:

系统自动调用。当view显示的时候调用,调用时机在父控件的viewWillAppear:方法和viewDidAppear:方法两者的调用间隔之间

参数含义:

rect表示当前view的frame

步骤:
  1. 获取上下文
    调用UIGraphicsGetCurrentContext()方法获取当前上下文
  2. 绘制路径
  1. 把绘制的内容保存到上下文中
    调用CGContextAddPath()方法
  2. 把上下文的内容显示到view上(渲染到view的layer上)
    调用stroke方法或fill方法
快速步骤:

直接对UIBezierPath对象调用strokefill方法(本质上是自动调用了方法,获取上下文并把路径添加到了上下文中)

</br>

四、上下文状态栈

上下文的状态可以存放到上下文状态栈中,通过调用CGContextSaveGState()方法即可把当前上下文的状态放到栈顶保存起来。
调用CGContextRestoreGState()方法即可读取状态栈中上下文的状态,取得处于栈顶的上下文状态。

</br>

五、矩阵操作

在对把路径添加到上下文之前,可以对上下文进行平移、旋转、缩放操作。分别调用
CGContextTranslateCTM()
CGContextRotateCTM()
CGContextScaleCTM()
三个方法即可

</br>


使用UIKit进行绘图

绘制文字
  1. 可以对NSString对象调用drawAtPoint:withAttributes:,将字符串绘制到View的指定位置,并带有指定的属性。
  2. 可以对NSString对象调用drawInRect:withAttributes:,将字符串绘制到指定区域,并带有指定的属性。与上一个方法的区别在于会自动换行。
绘制图片
  1. 可以对UIImage对象调用drawAtPoint:,将图片按照原始图片大小绘制到View的指定位置
  2. 可以对UIImage对象调用drawInRect:,将图片填充到指定区域中
  3. 可以对UIImage对象调用drawAsPatternInRect:,将图片以平铺的方式绘制到指定区域
注意点

使用UIKit框架中的方法进行绘制也需要上下文,因此也应该在drawRect:方法中绘制

</br>


上一篇 下一篇

猜你喜欢

热点阅读