Core Graphics

2016-12-10  本文已影响33人  lyking

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)
上一篇下一篇

猜你喜欢

热点阅读