知识点:图形上下文栈
用途:在使用过程中,需要画二根线条,其中一条需要很多样式,而另外一根不需要,又因为ctx是单例的,因此前面的状态会保留,那么怎么做呢?
这里就引入了图形上下文栈的概念,在最初的时候保留一份上下文在栈中:
CGContextSaveGState(ctx);//将当前的ctx保存到栈上
回头完成一根线条之后,在取出我们的上下文,自然保存原始的ctx
CGContextRestoreGState(ctx);//将栈内保存的ctx取出来
/**
图形上下文栈
引出知识点:如下,在画图过程中,有二根线,根据需要一根需要样式,另外一根不需要样式,又因为context是同一个,怎么办?
*/
#import "FLView.h"
@implementation FLView
- (void)drawRect:(CGRect)rect
{
//1、获得上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);//将当前的ctx保存到栈上
//设置绘图状态
CGContextSetLineWidth(ctx, 10);
[[UIColor redColor] set];
CGContextSetLineCap(ctx, kCGLineCapRound);
//先画一根线
CGContextMoveToPoint(ctx, 50, 50);
CGContextAddLineToPoint(ctx, 140, 160);
//渲染
CGContextStrokePath(ctx);
CGContextRestoreGState(ctx);//将栈内保存的ctx取出来
//再画一根线
CGContextMoveToPoint(ctx, 70, 50);
CGContextAddLineToPoint(ctx, 160, 260);
CGContextStrokePath(ctx);
}
@end
图形上下文栈
最新推荐文章于 2021-05-21 19:10:39 发布