美文网首页
Quartz 2D 学习笔记

Quartz 2D 学习笔记

作者: DylanPP | 来源:发表于2018-05-10 18:26 被阅读4次

    Quartz 2D

    C语言API,二维绘图引擎,基于Core Graphics框架,数据类型是以CG开头,方便自定义UI控件

    图形上下文

    Graphics Context :CGContextRef类型

    作用:

    1. 保存绘图信息、绘图状态;
    2. 图形到设备输出的媒介;

    自定义view

    重写drawRect

    - (void)drawRect:(CGRect)rect {
        //获取与当前view相关联的图形上下文
        CGContextRef context = UIGraphicsGetCurrentContext();
    }
    

    注意:调用setNeedsDisplay | setNeedsDisplayInRect ->调用drawRect 手动调用drawRect不能获取和View相关联的上下文

    常规绘图步骤

    - (void)drawRect:(CGRect)rect {
        //获得图形上下文:
        CGContextRef context = UIGraphicsGetCurrentContext();
        //设置属性
        CGContextSetLineWidth(context, 5.0);
        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
        //拼接路径
        CGContextMoveToPoint(context, 0, 0);
        CGContextAddLineToPoint(context, 100, 100);
        //绘制路径
        CGContextStrokePath(context);
    }
    

    常见函数

    拼接路径函数 说明
    CGContextMoveToPoint 新建一个起点
    CGContextAddLineToPoint 添加线段到某个点
    CGContextAddRect 添加矩形
    CGContextAddEllipseInRect 添加椭圆
    CGContextAddArc 添加圆弧
    绘制路径函数 说明
    CGContextDrawPath Mode参数决定绘制的模式
    CGContextStrokePath 绘制空心路径(描边)
    CGContextFillPath 绘制实心路径
    CGContextDrawPath说明
    使用样例 说明
    CGContextDrawPath(context, kCGPathFill) 实心路径
    CGContextDrawPath(context, kCGPathEOFill) 使用奇偶规则填充路径。
    CGContextDrawPath(context, kCGPathStroke) 描边路径
    CGContextDrawPath(context, kCGPathFillStroke) 填充并描边路径。
    CGContextDrawPath(context, kCGPathEOFillStroke) 使用奇偶规则填充并描边路径。

    非零缠绕数填充:默认的填充模式,从多边形的区域范围内找任意一个点,当多边形的边是左往右穿过射线的话过去就+1,从右往左穿过射线就-1,如果最后为0,就不填充,否则就填充),不绘制边框,简单的画个图什么是从左往右,什么是从右往左,内部的点都是不填充的,环绕数都为0;

    奇偶规则填充:被覆盖过奇数点的填充,被覆盖过偶数点的不填充 。从任意位置p作一条射线,若与该射线相交的多边形边的数目为奇数,则p是在多边形内,就去填充,否则就不填充。

    注:非零缠绕数的填充规则与绘制的方向有关、偶数-奇数规则则与方向无关

    矩阵操作函数 说明
    CGContextScaleCTM 缩放
    CGContextRotateCTM 旋转
    CGContextTranslateCTM 平移

    描边属性

    函数 说明 备注
    CGContextSetLineWidth 描边路径的宽度
    CGContextSetLineJoin 描边的连接点样式 Miter(尖角),Round(圆角),Bevel(平角)
    CGContextSetStrokeColor 描边颜色
    CGContextSetLineCap 直线端点样式 Butt,Round,Square
    CGContextSetMiterLimit 转角的量级
    CGContextSetLineDash 虚线模式 指定虚线数组和虚线相位控制虚线大小和位置
    CGContextSetStrokeColorSpace 描边颜色空间 封装了颜色和颜色空间的CGColorRef
    CGContextSetStrokePattern 笔触模式

    Quartz2D的内存管理

    1. Create”或“Copy”的函数创建的对象,使用完后必须释放;
    2. Retain创建对象需要对应Release。

    好记性不如烂笔头。

    END

    微博@迪达拉君
    GithubZhaoBinLe

    相关文章

      网友评论

          本文标题:Quartz 2D 学习笔记

          本文链接:https://www.haomeiwen.com/subject/ojstdftx.html