裁剪带圆环的图片



利用Quartz2D将一张正方形的图片裁剪成一张带有圆环的图片

思路:先画一个大圆,再画一个小圆(同心圆),然后将要裁剪的图片画到小圆上,裁剪掉多余的部分。

示意图如下:

代码:

 // 原图
    UIImage * img = [UIImage imageNamed:@"btn_01"];
    
    CGFloat margin = 5;// 圆环半径
    CGFloat imgWidth = img.size.width + margin * 2;
    CGFloat imgHeight = img.size.height + margin * 2;
    
    CGSize size = CGSizeMake(imgWidth, imgHeight);
    // 开启图片上下文
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    
    // 获取当前上下文
   CGContextRef  ref = UIGraphicsGetCurrentContext();
    
    // 画大圆
    
    CGFloat radius = imgWidth * 0.5;
    
    // 圆心
    CGPoint center = CGPointMake(radius, radius);
    
    UIBezierPath * bigPath = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:0 endAngle:M_PI * 2 clockwise:YES];
    
    // 绘制路径
    CGContextAddPath(ref, bigPath.CGPath);
    
    // 颜色
    [[UIColor greenColor] set];
    
    CGContextDrawPath(ref, kCGPathFill);
    
    // 画小圆
    UIBezierPath * smallPath = [UIBezierPath bezierPathWithArcCenter:center radius:radius - margin startAngle:0
                                                            endAngle:M_PI * 2 clockwise:NO];
    
    CGContextAddPath(ref, smallPath.CGPath);
    
    // 裁剪
    CGContextClip(ref);
    
    [img drawAtPoint:CGPointMake(margin, margin)];
    
    UIImage * newImg = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    //self.imgView.backgroundColor = [UIColor redColor];
    self.imgView.image = newImg;

效果图


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值