Quart2D图形上下文

学习了下绘制文本图形后,下面学习图形上下文栈。

在Quart 2D绘制简单图形http://www.cnblogs.com/cuiyw/p/4401857.html时,如果绘制不一样属性的内容时,在渲染之前都会重新设置边框颜色、填充颜色等这些,有时可能会先绘制一个红色的线,再绘制蓝色的线,然后再绘制和第一条属性一样的线,如果按之前的方法可能每次绘制渲染都要重新设置,那样就会变的特别麻烦,要解决这个问题可以用图形上下文栈。

在获取图形上下文之后,通过 CGContextSaveGState(ctx);方法,把当前获取的上下文拷贝一份,保存一份最纯洁的图形上下文。

在画第二条线之前,使用CGContextRestoreGState(ctx);方法,还原开始的时候保存的那份最纯洁的图形上下文。
     CGContextRef context=UIGraphicsGetCurrentContext();

     CGContextMoveToPoint(context, 20, 100);

     CGContextAddLineToPoint(context, 30, 200);

     CGContextSetRGBStrokeColor(context, 1.0, 0, 1.0, 1.0);

    //保存当前画布1的样式属性

     CGContextSaveGState(context);

     CGContextStrokePath(context);

    

     CGContextMoveToPoint(context, 30, 100);

     CGContextAddLineToPoint(context, 40, 200);

     CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);

    //保存当前画布2的样式属性

     CGContextSaveGState(context);

     CGContextStrokePath(context);

    

    // 恢复画布2属性到以前保存样式 若无则按最近一次设置的样式

     CGContextRestoreGState(context);

     CGContextMoveToPoint(context, 40, 100);

     CGContextAddLineToPoint(context, 50, 200);

     CGContextStrokePath(context);

    

     // 恢复画布1属性到以前保存样式 若无则按最近一次设置的样式

     CGContextRestoreGState(context);

     CGContextMoveToPoint(context, 50, 100);

     CGContextAddLineToPoint(context, 60, 200);

     CGContextStrokePath(context);

运行结果:

Quart2D图形上下文

 

你可能感兴趣的:(图形)