IOS 图形上下文栈

- (void)drawRect:(CGRect)rect
{

    // 获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 保存一份最纯洁的图形上下文
    // 调用一次该方法就会拷贝一个上下文到栈中
    CGContextSaveGState(ctx);
//CGContextSaveGState(ctx);

    // 第一条线
    // 利用图形上下文保存绘图信息
    CGContextMoveToPoint(ctx, 150, 20);
    CGContextAddLineToPoint(ctx, 20, 100);

    // 设置第一条线的状态
    CGContextSetLineWidth(ctx, 10);
    CGContextSetLineCap(ctx, kCGLineCapRound);
    [[UIColor redColor] set];

    // 渲染
    CGContextStrokePath(ctx);

    // 还原开始保存的那份最纯洁的图形上下文
    CGContextRestoreGState(ctx);

    // 第二条线
    CGContextMoveToPoint(ctx, 80, 30);
    CGContextAddLineToPoint(ctx, 80, 150);
    /*
    // 清空状态
    CGContextSetLineWidth(ctx, 5);
    CGContextSetLineCap(ctx, kCGLineCapButt);
    [[UIColor greenColor] set];
    */

    // 还原开始保存的那份最纯洁的图形上下文
    CGContextRestoreGState(ctx);
    /*
    // 第3条线
    CGContextMoveToPoint(ctx, 200, 30);
    CGContextAddLineToPoint(ctx, 80, 150);
    */

    // 渲染
    CGContextStrokePath(ctx);

}
时间: 2024-11-05 06:31:22

IOS 图形上下文栈的相关文章

ios图形上下文栈

1 - (void)drawRect:(CGRect)rect 2 { 3 // 获取上下文 4 CGContextRef ctx = UIGraphicsGetCurrentContext(); 5 6 // 保存一份最纯洁的图形上下文 7 // 调用一次该方法就会拷贝一个上下文到栈中,存几次就最多能调用几次 CGContextRestoreGState(ctx),如果存了一次,取第二次的时候就会报错 8 9 CGContextSaveGState(ctx); 10 //CGContextSa

iOS开发UI篇—Quartz2D使用(图形上下文栈)

iOS开发UI篇-Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurre

iOS开发UI篇—Quartz2D使用(图形上下文栈

转自:http://www.cnblogs.com/wendingding/p/3782489.html 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextR

iOS高级-QuartzCore框架-图形上下文栈、矩阵操作、裁剪、重绘(刷帧)

一.图形上下文栈1.自定义一个MJView,继承自UIView2.将默认View的Class设置为MJView3.实现drawRect:方法-(void)drawRect:(CGRect)rect{ //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(): //将当前的ctx拷贝一份放到栈中 CGContextSaveGState(ctx): //设置绘图状态 CGContextSetLineWidth(ctx,10): [[UICo

猫猫学IOS(三十一)UI之Quartz2D图形上下文栈

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 首先,前面博客说过.qurza2d的上下文中有绘图信息和绘图的属性. 但是他是怎么绘制到上下午中的呢? 我们画图时候一半会用这三个步骤: (1)获取上下文 (2)绘图 (3)渲染 这里引申出来一个问题,画两条线的时候,是怎么工作呢? 画两条相交的线 设置线段的宽度:两头为圆形,颜色等. 代码: - (void)drawRect

Quartz 2D 图形上下文栈 矩阵 裁剪

Quartz 2D 图形上下文栈  矩阵 1 // 2 // DJVIew.m 3 // 图形上下文栈 4 // 5 // Created by zjj on 15/6/30. 6 // Copyright (c) 2015年 zjj. All rights reserved. 7 // 8 9 #import "DJVIew.h" 10 11 @implementation DJVIew 12 13 - (void)drawRect:(CGRect)rect 14 { 15 CGCo

Quartz2D使用(图形上下文栈)

Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurrentContext

Quartz2d 画饼状图 图形上下文栈 矩阵操作 裁剪圆角图片

画饼状图 - (void)drawRect:(CGRect)rect { // Drawing code // 需求:根据sections的数据,绘制多个扇形 // 1.获取上下文(Layer Graphics Context) CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.根据sections的个数,计算扇形的起始和结束位置来画扇形 NSInteger count = self.sections.count; // 如果没有数据,

【iOS】Quartz2D图形上下文

一.绘图的完整过程 程序启动,显示自定义的view.当程序第一次显示在我们眼前的时候,程序会调用drawRect:方法,在里面获取了图形上下文(在内存中拥有了),然后利用图形上下文保存绘图信息,可以理解为图形上下文中有一块区域用来保存绘图信息,有一块区域用来保存绘图的状态(线宽,圆角,颜色).直线不是直接绘制到view上的,可以理解为在图形上下文中有一块单独的区域用来先绘制图形,当调用渲染方法的时候,再把绘制好的图形显示到view上去. 在绘制图形区域,会去保存绘图状态区域中查找对应的状态信息(