IOS圖形的裁剪

pwmd 9年前發布 | 1K 次閱讀 Objective-C IOS

我們要做出以下的效果:

①這里我們要新建一個圖層

②得到圖層的設備上下文

③在圖層中繪制一個大圓,然后渲染到圖層

④然后繪制一個小圓,剪切,然后渲染到圖層

⑤繪制圖片圖層中

⑥然后從當前圖層中獲得圖片,顯示到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)];  
}  

</pre>

 本文由用戶 pwmd 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!