iOS :Quartz2D - 直线绘制

iOS :Quartz2D - 直线绘制_第1张图片
绘制
  • Quartz 2D 是一个二维绘图引擎,同时支持iOS 和 Mac系统
  • Quartz 2D 能完成的工作:
1、绘制图形: 线条、三角形、矩形、圆和弧等;
2、绘制文字;
3、绘制,生成图片(图像);
4、读取,生成PDF;
5、截图,裁剪图片;
6、自定义 UI 控件(普通的 UI 控件无法使用 UIkit 框架实现,可以使用 Quartz 2D 技术将控件内部的结构画出来,自定义控件的样子,例如五角星⭐️)。

图像上下文:“画板”

  • 图形上下文(Graphics Context): 是一个 CGContextRef 类型的数据;
  • 图行上下文的作用:
1、保存绘制信息,绘图状态;
2、决定绘制的输出目标(绘制到什么地方去?):输出目标可以是PDF文件、Bitmap(位图)或者显示器的窗口上;
3、相同的一套绘图序列,指定不同的 Graphics Context,就可将想吐的图像绘制到不同的目标。

iOS :Quartz2D - 直线绘制_第2张图片
绘制流程

图形上下文类型

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

自定义 View

  • 新建一个类,继承自 UIview
  • 实现 - (void)drawRect:(CGRect)rect 方法(只有在这个方法里,才能获取图像上下文,和View 相关联),然后在这个方法中:
1、取得跟当前 view 相关联的图像上下文;
2、绘制相应的图形内容;
3、利用图形上下文将绘制的所有内容渲染显示到 view 上面



iOS :Quartz2D - 直线绘制_第3张图片
绘制效果

绘制直线

方法一:开发中不常用

    //1、获取图像的上下文
   CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2、绘制描述路径
    CGMutablePathRef path =   CGPathCreateMutable();
    // 3、绘制路径的起点
    CGPathMoveToPoint(path, NULL, 50, 50);
    CGPathAddLineToPoint(path, NULL, 200, 200);
    //把路径添加到上下文
    CGContextAddPath(ctx, path);
    //4、 渲染上下文
    CGContextStrokePath(ctx);


方法二:

    // 获取上下文 本身封装的方法,路径封装了
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //描述路径
    //添加起点
    CGContextMoveToPoint(ctx, 50, 50);
    //添加直线
    CGContextAddLineToPoint(ctx, 200, 200);
    //渲染上下文
    CGContextStrokePath(ctx);

方法三:开发建议使用

    // UIkit 自己封装的绘制功能 贝塞尔路径绘制
    // 创建路径
    UIBezierPath *path = [UIBezierPath bezierPath];
    // 路径起点
    [path moveToPoint:CGPointMake(50, 50)];
    // 添加线到
    [path addLineToPoint:CGPointMake(200, 200)];
    // 渲染路径
    [path stroke];

你可能感兴趣的:(iOS :Quartz2D - 直线绘制)