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