iOS Quartz 2D 绘制图形(线段\三角形\矩形\圆\圆弧等)

  • Quartz 2D是一个二维绘图引擎,Quartz 2D 的API是C语言, 来自于CoreGraphic框架, 没有面向对象的思想
    • 1.作用:绘制图形 : 线段\三角形\矩形\圆\圆弧等
      绘制文字
      绘制\生成图片(图像)
      读取\生成PDF
      截图\裁剪图片
      自定义UI控件
    • 2.图形上下文 (Graphics Context) : 是一个CGContextRef类型的数据
      作用 :
      1.保存绘图信息,绘图状态
      2.决定绘制的输出目标(绘制到什么地方去,输出目标可以是PDF文件,Bitmap或者显示器的窗口上)

新建一个View,继承与UIView,在新View的.m文件里,把自带的注释去掉,就有一个自带的方法

- (void)drawRect:(CGRect)rect {
    //在这里绘图
}
//系统自动调用,视图显示在屏幕上的时候调用,且调用一次
- (void)drawRect:(CGRect)rect {
//    drawline();       //画线
//    drawR();          //画四边形
//    drawTriangle();   //绘制三角形
//    drawCircle();     //画圆形
//    drawArc();        //画圆弧
//    drawBezier();       //贝塞尔曲线
}
//画线
void drawline(){
    //1.获得图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //将上下文复制一份到栈中
    CGContextSaveGState(context);
    //2.绘制图形
    //设置头尾部样式
    CGContextSetLineCap(context, kCGLineCapRound);
    //设置线段宽度
    CGContextSetLineWidth(context, 20);
    //设置颜色
    CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);
    //设置起点
    CGContextMoveToPoint(context, 10, 10);
    //画线
    CGContextAddLineToPoint(context, 100, 100);
    //3.显示到View上
    CGContextStrokePath(context);//空心画出
    //将图形上下文出栈,替换当前的上下文
    CGContextRestoreGState(context);

    //2条线
    [[UIColor lightGrayColor] set];
    //设置头尾部样式
    CGContextSetLineCap(context, kCGLineCapRound);
    //设置线段转折点样式
    CGContextSetLineJoin(context, kCGLineJoinRound);
    //画线
    CGContextMoveToPoint(context, 100, 120);

    CGContextAddLineToPoint(context, 150, 120);
    CGContextAddLineToPoint(context, 150, 180);
    //3.显示到View上
    CGContextStrokePath(context);

}

这里写图片描述

//画四边形
void drawR(){
    //1.获得图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //2.绘制四边形
    CGContextAddRect(context, CGRectMake(10, 10, 120, 120));
    //设置颜色
    [[UIColor lightGrayColor] setFill];
    //3.显示到View上
    CGContextFillPath(context);  //实心画出
}

这里写图片描述

//绘制三角形
void drawTriangle(){
    //1.获得图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //2.绘制三角形
    CGContextMoveToPoint(context, 100, 0);
    CGContextAddLineToPoint(context, 100, 100);
    CGContextAddLineToPoint(context, 150, 100);
    //关闭路径 (连接起点和最后一个点)
    CGContextClosePath(context);
    [[UIColor redColor] set];
    //3.显示到View上
    CGContextFillPath(context);
}

这里写图片描述

//画圆形
void drawCircle(){
    //1.获取图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //2.绘制图形
    CGContextAddEllipseInRect(context, CGRectMake(50, 50, 100, 100));  //把宽高设不同,就变成椭圆了
    //设置线段宽度
    CGContextSetLineWidth(context, 10);
    //3.显示在View上
    CGContextStrokePath(context);
}

这里写图片描述

//画圆弧
void drawArc(){
    //1.获取图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //2.绘制图形


    // x\y:圆心
    // radius:半径
    // startAngle : 开始角度
    // endAngle : 结束角度
    // clockwise : 圆弧的伸展方向(0 : 顺时针, 1 : 逆时针)
    CGContextAddArc(context, 100, 100, 50, arc(90), arc(200), 1);
    //3.显示在View上
    CGContextStrokePath(context);
}

这里写图片描述

//贝塞尔曲线
void drawBezier(){
    //1.取得图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //起点
    CGContextMoveToPoint(context, 10, 10);
    //2个控制点
//    CGContextAddCurveToPoint(context, 120, 150, 180, 50, 190, 190);
    //1个控制点
    CGContextAddQuadCurveToPoint(context, 50, 200, 200, 100);
    //显示在View上
    CGContextStrokePath(context);
}

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值