美文网首页
Core Graphics

Core Graphics

作者: lyking | 来源:发表于2016-12-10 16:53 被阅读33次

    Core Graphics 是iOS上层UIKit实现的基础,为了更好的了解iOS的绘制体系,学习Core Graphics很有必要。自定义控件也都基于Core Graphics,所以要想在iOS开发中进行更高级的开发,必然要了解Core Graphics。



    绘制的基本步骤:(在drawRect函数中)

    1、获取绘图上下文
    2、创建并设置路径
    3、将路径添加到上下文
    4、设置上下文状态
    5、绘制路径

    <h5>注意</h5>

    想在initWithFrame或者其他函数里调用UIGraphicsGetCurrentContext()函数,结果被告知invalid context 0x0.按照文档中的说法,系统会维护一个CGContextRef的栈,而UIGraphicsGetCurrentContext()会取栈顶的CGContextRef.
    正确的做法是只在drawRect里调用UIGraphicsGetCurrentContext(),因为在drawRect之前,系统会往栈里面压入一个valid的CGContextRef,除非自己去维护一个CGContextRef,否则不应该在其他地方取CGContextRef。

    常见API

    //1.获取绘图上下文
    CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文
    
    //2、创建并设置路径
    CGPathCreateMutable 创建一个可变的图形路径。
    CGPathCreateWithEllipseInRect 创建一个椭圆的不可变路径。
    CGPathCreateWithRect 创建一个矩形的不可变路径。
    CGPathCreateWithRoundedRect 创建一个圆角矩形的不可变路径。
    CGContextClosePath  关闭路径
    
    
    //3、将路径添加到上下文
    CGPathAddPath 添加一个路径到一个可变的图形路径。
    
    //创建并添加路径到上下文(二合一)
    CGContextMoveToPoint  起始坐标点
    CGContextAddLineToPoint 画直线
    
    CGContextAddEllipseInRect 画一椭圆
    CGContextAddRect 画一方框
    CGContextAddArc 画已曲线 前俩店为中心 中间俩店为起始弧度 最后一数据为0则顺时针画 1则逆时针
    CGContextAddArcToPoint(context,0,0, 2, 9, 40);//先画俩条线从point 到 弟1点 , 从弟1点到弟2点的线 切割里面的圆 
    
    //4、设置上下文状态
    CGContextSetLineCap 设置线条终点形状
    CGContextSetLineDash 画虚线
    CGContextSetRGBStrokeColor 设置画笔颜色
    CGContextSetRGBFillColor 设置填充颜色
    CGContextSetLineWidth 设置线条宽度
    CGContextSetShadowWithColor 设置阴影
    CGContextSetAlaha 设置透明度
    
    5、绘制路径
    CGContextStrokePath(CGContextRef  _Nullable c)  //绘制路径
    /*
            CGPathDrawingMode是填充方式,枚举类型
            Fill:只有填充(非零缠绕数填充),不绘制边框
            EOFill:奇偶规则填充(多条路径交叉时,奇数交叉填充,偶交叉不填充)
            Stroke:只有边框
            FillStroke:既有边框又有填充
            EOFillStroke:奇偶填充并绘制边框
    */
    CGContextDrawPath(CGContextRef  _Nullable c, CGPathDrawingMode mode)

    相关文章

      网友评论

          本文标题:Core Graphics

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