IOS学习之——图形上下文

来源:互联网 发布:强力手机数据恢复软件 编辑:程序博客网 时间:2024/06/05 20:17
//************************************************************************************************************    14   图形上下文                //  2.图形上下文(Graphics Context) :是一个CGContextRef类型的数据                //                              作用  ://保存绘图信息,绘图状态 //决定绘制的输出目标 (绘制到哪个地方去 ?PDF)                //                             (输出目标可以是PDF文件,Bitmap(绘图)或者显示器的窗口上)                // 相同的一套绘图序列,指定不同的图形上下文, 就可将相同的图像绘图到不同的目标上                //                              绘制好的图形     保存在   图形上下文      显示在     输出目标1)图形上下文栈(栈stack)          作用: 恢复最初的绘图状态                1.将当前的图形上下文的状态copy一份到栈。                2.上下文的什么状态呢? 颜色 ,线框,这些都是上下文状态                //保存一个当前上下文的绘图状态到一个栈里面                //G代理Graphics                CGContextSaveGState(ctx);                //恢复当前上下文的状态                CGContextRestoreGState(ctx);#warining 恢复状态不能随便用,保存了多少次的绘图状态,就可以调用多少#pragma mark 剪裁图片    (正常图片 剪裁成 圆角图片)                步骤:(1)自定义一个CircleImageView控件,中drawRect 中, 获取上下文,往上下文中添加一张图片                (2)调用CGContextClip的方法,剪裁路径之外多余的部分                (3)自定义的控制中,添加一个imageName 属性,然后回到drawrect 方法画图                (4)画圆的边框,使用CGContextAddEllipseInRect 添加圆的路径,并使用CGContextStrokePath 画空心圆                // 1.实现裁剪图片显圆形 并显示                // 1.1.获取上下文                CGContextRef ctx = UIGraphicsGetCurrentContext();                // 1.2.指定圆的路径,并圆外面多余的剪切掉[CGContextClip]#warning CGContextClip方法要记住:把圆之外的剪切掉了。                // 定义图片的Rect                CGRect imageRect = CGRectMake(0, 0, rect.size.width, rect.size.height);                CGContextAddEllipseInRect(ctx, imageRect);                //把圆之外的剪切掉了。                CGContextClip(ctx);                // 1.3.就把图片显示在UIView                UIImage *image = [UIImage imageNamed:self.imageName];                [image drawInRect:imageRect];                // 2.添加一个圆的边框                //线宽                CGContextSetLineWidth(ctx, self.borderWidth);                //设置边框的颜色                [self.borderColor set];                CGContextAddEllipseInRect(ctx, imageRect);                CGContextStrokePath(ctx);            }
0 0