图形上下文栈

来源:互联网 发布:奶酪陷阱知乎 编辑:程序博客网 时间:2024/05/30 23:40
知识点:图形上下文栈用途:在使用过程中,需要画二根线条,其中一条需要很多样式,而另外一根不需要,又因为ctx是单例的,因此前面的状态会保留,那么怎么做呢?这里就引入了图形上下文栈的概念,在最初的时候保留一份上下文在栈中:CGContextSaveGState(ctx);//将当前的ctx保存到栈上回头完成一根线条之后,在取出我们的上下文,自然保存原始的ctxCGContextRestoreGState(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

0 0