• Quartz2D基本图形绘制的3种方法详解


    #pragma mark - 绘图的几种方式

    #pragma mark - 绘图第三种方式

    1.#pragma mark - 最原始的绘图方式

    - (void)drawLine

    {

    // 1.获取图形上下文

    // 目前我们所用的上下文都是以UIGraphics

    // CGContextRef Ref:引用 CG:目前使用到的类型和函数 一般都是CG开头 CoreGraphics

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2.描述路径

    // 创建路径

    CGMutablePathRef path = CGPathCreateMutable();

    // 设置起点

    // path:给哪个路径设置起点

    CGPathMoveToPoint(path, NULL, 50, 50);

    // 添加一根线到某个点

    CGPathAddLineToPoint(path, NULL, 200, 200);

    // 3.把路径添加到上下文

    CGContextAddPath(ctx, path);

    // 4.渲染上下文

    CGContextStrokePath(ctx);

    }

    2.#pragma mark - 绘图第二种方式

    - (void)drawLine1

    {

    // 获取上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 描述路径

    // 设置起点

    CGContextMoveToPoint(ctx, 50, 50);

    CGContextAddLineToPoint(ctx, 200, 200);

    // 渲染上下文

    CGContextStrokePath(ctx);

    }

    3.// 贝瑟尔路径

    - (void)drawLine2

    {

    // UIKit已经封装了一些绘图的功能

    // 创建路径

    UIBezierPath *path = [UIBezierPath bezierPath];

    // 设置起点

    [path moveToPoint:CGPointMake(50, 50)];

    // 添加一根线到某个点

    [path addLineToPoint:CGPointMake(200, 200)];

    // 绘制路径

    [path stroke];

    //    NSLog(@"%@",NSStringFromCGRect(rect));

    }

    绘制曲线的属性设置

    1.//UIKit封装好的框架-贝塞尔曲线属性设置

    - (void)drawUIBezierPathState

    {

    UIBezierPath *path = [UIBezierPath bezierPath];

    [path moveToPoint:CGPointMake(50, 50)];

    [path addLineToPoint:CGPointMake(200, 200)];

    path.lineWidth = 10;

    [[UIColor redColor] set];

    [path stroke];

    UIBezierPath *path1 = [UIBezierPath bezierPath];

    [path1 moveToPoint:CGPointMake(0, 0)];

    [path1 addLineToPoint:CGPointMake(30, 60)];

    [[UIColor greenColor] set];

    path1.lineWidth = 3;

    [path1 stroke];

    }

    2.原生绘制的图形的具体属性设置

    - (void)drawCtxState

    {

    // 获取上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 描述路径

    //起点

    CGContextMoveToPoint(ctx, 50, 50);

    CGContextAddLineToPoint(ctx, 100, 50);

    // 设置起点

    CGContextMoveToPoint(ctx, 80, 60);

    // 默认下一根线的起点就是上一根线终点

    CGContextAddLineToPoint(ctx, 100, 200);

    // 设置绘图状态,一定要在渲染之前

    // 颜色

    [[UIColor redColor] setStroke];

    // 线宽

    CGContextSetLineWidth(ctx, 5);

    // 设置连接样式

    CGContextSetLineJoin(ctx, kCGLineJoinBevel);

    // 设置顶角样式

    CGContextSetLineCap(ctx, kCGLineCapRound);

    // 渲染上下文

    CGContextStrokePath(ctx);

    }

  • 相关阅读:
    Codeforces Round #747 比赛记录(vp)
    神秘姿势:把 K(2n) 分解成 2n-1 组完美匹配
    Codeforces Round #745 比赛记录(vp)
    NOIP Camp #2 比赛记录
    数论 专题整理
    Java基础之流程控制语句
    Java基本类型
    开启学科模式
    Strange Queries (莫队+容斥原理)
    洛谷P1993 小K的农场
  • 原文地址:https://www.cnblogs.com/CJH5209/p/6029765.html
Copyright © 2020-2023  润新知