Quartz2D之图形上下文状态栈

图形上下文状态栈

  • 在图形绘制的过程中,通常需要绘制多条线,很有可能多条线的颜色、粗细等会不同,那么就需要在第二条路径对这些属性进行覆盖
  • 这个时候就可以使用图形上下文状态栈
    // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2.描述路径
    // 第一根
    UIBezierPath *path = [UIBezierPath bezierPath];

    [path moveToPoint:CGPointMake(10, 125)];

    [path addLineToPoint:CGPointMake(240, 125)];

    // 把路径添加到上下文
    // .CGPath 可以UIkit的路径转换成CoreGraphics路径
    CGContextAddPath(ctx, path.CGPath);

    // 保存一份上下文的状态
    CGContextSaveGState(ctx);

    // 设置上下文状态
    CGContextSetLineWidth(ctx, 10);

    [[UIColor redColor] set];

    // 渲染上下文
    CGContextStrokePath(ctx);

    // 第二根
    // 2.描述路径
     path = [UIBezierPath bezierPath];

    [path moveToPoint:CGPointMake(125, 10)];

    [path addLineToPoint:CGPointMake(125, 240)];

    // 把路径添加到上下文
    // .CGPath 可以UIkit的路径转换成CoreGraphics路径
    CGContextAddPath(ctx, path.CGPath);

    // 还原状态
    CGContextRestoreGState(ctx);

    // 渲染上下文
    CGContextStrokePath(ctx);
注意,使用这种方法渲染上下文的,设置的状态只能设置在上下文上面,不能将状态设置到贝塞尔路径上面

你可能感兴趣的:(Quartz2D之图形上下文状态栈)