CoreGraphics 入门篇

引言:

  • UIKit依赖于Core Graphics框架,也是基于Core Graphics框架实现的
  • Core Graphics其实是一套基于C的API框架,使用了Quartz作为绘图引擎。这也就意味着Core Graphics不是面向对象的
  • Core Graphics需要一个图形上下文(Context),就是一张画布
  • Core Graphics的图形上下文(Context)是堆栈式的。只能在栈顶的上下文(画布)上画图。

简单的绘图

获取画布

CGContextRef context = UIGraphicsGetCurrentContext();// 获取上下文

画笔相关:

//设置图形上下文状态属性
    CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1);//设置笔触颜色
    CGContextSetRGBFillColor(context, 0, 1.0, 0, 1);//设置填充色
    CGContextSetLineWidth(context, 2.0);//设置线条宽度
    CGContextSetLineCap(context, kCGLineCapRound);//设置顶点样式
    CGContextSetLineJoin(context, kCGLineJoinRound);//设置连接点样式
    CGFloat lengths[2] = { 18, 9 };
    CGContextSetLineDash(context, 0, lengths, 2);// 用于绘制虚线
    CGContextSetShadowWithColor(context, CGSizeMake(2, 2), 0, [UIColor blackColor].CGColor);// 设置阴影
    CGContextDrawPath(context, kCGPathFillStroke);//最后一个参数是填充类型

顶点指的是路径的起始点和结束点,连接点指的是路径中的转折点(折现才有)

路径相关

基础:

  • CGPathAddLineToPoint 通过这个函数,能绘制复杂的折线
  • CGContextAddPath(context, path);通过这个函数,把路径添加到上下文(画布)中
CGPathMoveToPoint(path, nil, 20, 50);//移动到指定位置(设置路径起点)
CGPathAddLineToPoint(path, nil, 20, 100);//绘制直线(从起始位置开始)
CGContextAddPath(context, path);// 添加进context之后,调用DrawPath绘制

相关的绘制:

CGContextAddLineToPoint();//绘制直线
CGContextAddCurveToPoint();//椭圆曲线
CGContextAddQuadCurveToPoint();//二次曲线
CGContextAddArcToPoint();//圆形曲线
CGContextClosePath();// 封闭路径(起点终点会链接起来)

提供的封装:

CGContextAddRect();//绘制矩形
CGContextAddRects();//画多个矩形
CGContextAddLines();//画多个线
CGContextAddEllipseInRect();//画椭圆 
CGContextAddArc();//画圆

绘制相关

CGContextDrawPath(context, kCGPathFillStroke);//最后一个参数是填充类型

释放内存

//创建路径
CGMutablePathRef path = CGPathCreateMutable();
// CGPathCreateMutable方法返回的路径是一个Core Fundation Object。而这并不在ARC的管理范围之内。所以需要手动释放对象
 CGPathRelease(path);// 释放

综上所述,步骤如下:

  1. 获取上下文(画布)
  2. 创建路径(自定义或者调用系统的API)并添加到上下文中。
  3. 进行绘图内容的设置(画笔颜色、粗细、填充区域颜色、阴影、连接点形状等)
  4. 开始绘图(CGContextDrawPath)
  5. 释放路径(CGPathRelease)

你可能感兴趣的:(CoreGraphics 入门篇)