【深入浅出IOS开发】图形的裁剪

我们要做出以下的效果:


①这里我们要新建一个图层

②得到图层的设备上下文

③在图层中绘制一个大圆,然后渲染到图层

④然后绘制一个小圆,剪切,然后渲染到图层

⑤绘制图片图层中

⑥然后从当前图层中获得图片,显示到View中

[objc]  view plain copy
  1. - (void)drawRect:(CGRect)rect  
  2. {  
  3.     UIImage *imageBackground = [UIImage imageNamed:@"01"];  
  4.       
  5.     //1.创建图层,此图大一些作为外框  
  6.     CGFloat margin = 5;  
  7.     CGFloat imageNewWidth = imageBackground.size.width + margin;  
  8.     CGFloat imageNewHeight = imageBackground.size.width+ margin;  
  9.     UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageNewWidth, imageNewHeight), NO0.0);  
  10.   
  11.     //2.创建设备上下文,此时得到的上下文是图层的上下文。原因是上面创建了图层  
  12.     CGContextRef ctr = UIGraphicsGetCurrentContext();  
  13.     //3.在图层中绘制一个大圆,作为外框  
  14.     CGContextAddEllipseInRect(ctr, CGRectMake(00, imageNewWidth, imageNewHeight));  
  15.     [[UIColor redColor]set];  
  16.     CGContextFillPath(ctr);  
  17.       
  18.     //3.绘制小圆作为剪切图片的用  
  19.     [[UIColor blueColor]set];  
  20.     CGContextAddEllipseInRect(ctr, CGRectMake(margin, margin, imageNewWidth - 2*margin, imageNewHeight - 2*margin));  
  21.     //4.按照当前的模式裁剪,裁剪只对后面绘制的图层有效 对已经绘制的图层无效  
  22.    CGContextClip(ctr);  
  23.     CGContextStrokePath(ctr);  
  24.   
  25.     //5.绘制图片  
  26.     [imageBackground drawAtPoint:CGPointMake(00)];  
  27.     //6.从当前图层中获得Image  
  28.     UIImage *imageNew = UIGraphicsGetImageFromCurrentImageContext();  
  29.     //7.结束图层  
  30.     UIGraphicsEndImageContext();  
  31.       
  32.     //8.绘制上文得到的Image到View中  
  33.     [imageNew drawAtPoint:CGPointMake(00)];  
  34. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值