IOS图形的裁剪

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

我们要做出以下的效果:

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

②得到图层的设备上下文

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

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

⑤绘制图片图层中

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

    - (void)drawRect:(CGRect)rect  
    {  
        UIImage *imageBackground = [UIImage imageNamed:@"01"];  
          
        //1.创建图层,此图大一些作为外框  
        CGFloat margin = 5;  
        CGFloat imageNewWidth = imageBackground.size.width + margin;  
        CGFloat imageNewHeight = imageBackground.size.width+ margin;  
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageNewWidth, imageNewHeight), NO, 0.0);  
      
        //2.创建设备上下文,此时得到的上下文是图层的上下文。原因是上面创建了图层  
        CGContextRef ctr = UIGraphicsGetCurrentContext();  
        //3.在图层中绘制一个大圆,作为外框  
        CGContextAddEllipseInRect(ctr, CGRectMake(0, 0, imageNewWidth, imageNewHeight));  
        [[UIColor redColor]set];  
        CGContextFillPath(ctr);  
          
        //3.绘制小圆作为剪切图片的用  
        [[UIColor blueColor]set];  
        CGContextAddEllipseInRect(ctr, CGRectMake(margin, margin, imageNewWidth - 2*margin, imageNewHeight - 2*margin));  
        //4.按照当前的模式裁剪,裁剪只对后面绘制的图层有效 对已经绘制的图层无效  
       CGContextClip(ctr);  
        CGContextStrokePath(ctr);  
      
        //5.绘制图片  
        [imageBackground drawAtPoint:CGPointMake(0, 0)];  
        //6.从当前图层中获得Image  
        UIImage *imageNew = UIGraphicsGetImageFromCurrentImageContext();  
        //7.结束图层  
        UIGraphicsEndImageContext();  
          
        //8.绘制上文得到的Image到View中  
        [imageNew drawAtPoint:CGPointMake(0, 0)];  
    }  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:iOS 创建文件夹,删除文件夹,对文件夹重命名的操作

下一篇:利用AVFoundation实现Blink拍照和录像的功能