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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值