标签:
学习了下绘制文本图形后,下面学习图形上下文栈。
在Quart 2D绘制简单图形http://www.cnblogs.com/cuiyw/p/4401857.html时,如果绘制不一样属性的内容时,在渲染之前都会重新设置边框颜色、填充颜色等这些,有时可能会先绘制一个红色的线,再绘制蓝色的线,然后再绘制和第一条属性一样的线,如果按之前的方法可能每次绘制渲染都要重新设置,那样就会变的特别麻烦,要解决这个问题可以用图形上下文栈。
在获取图形上下文之后,通过 CGContextSaveGState(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);
运行结果:
标签:
原文地址:http://www.cnblogs.com/cuiyw/p/4402091.html