IOS学习之——图形上下文

//************************************************************************************************************ 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);
            }



你可能感兴趣的:(ios,图形)