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

在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图形上下文



相关文章:

  • 2021-10-25
  • 2021-11-03
  • 2022-12-23
  • 2021-04-30
  • 2021-06-16
  • 2021-06-02
  • 2021-08-16
猜你喜欢
  • 2021-09-30
  • 2021-06-14
  • 2021-11-13
  • 2021-09-25
  • 2021-06-23
  • 2021-05-16
  • 2022-01-26
相关资源
相似解决方案