ios 基本图形的绘制 基于bitmap 位图
2014-05-16 14:57
330 查看
转自:http://www.maxiaoguo.com/clothes/253.html
内容包括 图片水印,图片裁剪,屏幕截图,背景平铺
1、图片水印功能
2、图片裁剪
3、屏幕截图
调用
4,背景拉伸
5、背景平铺
内容包括 图片水印,图片裁剪,屏幕截图,背景平铺
1、图片水印功能
#import "UIImage+MJ.h" @implementation UIImage (MJ) + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo { UIImage *bgImage = [UIImage imageNamed:bg]; // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) UIGraphicsBeginImageContextWithOptions(bgImage.size, NO, 0.0); // 2.画背景 [bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)]; // 3.画右下角的水印 UIImage *waterImage = [UIImage imageNamed:logo]; CGFloat scale = 0.2; CGFloat margin = 5; CGFloat waterW = waterImage.size.width * scale; CGFloat waterH = waterImage.size.height * scale; CGFloat waterX = bgImage.size.width - waterW - margin; CGFloat waterY = bgImage.size.height - waterH - margin; [waterImage drawInRect:CGRectMake(waterX, waterY, waterW, waterH)]; // 4.从上下文中取得制作完毕的UIImage对象 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 5.结束上下文 UIGraphicsEndImageContext(); return newImage; } @end调用
// 1.返回水印图片 UIImage *newImage = [UIImage waterImageWithBg:@"scene" logo:@"logo"]; // 2.显示图片 self.iconView.image = newImage;
2、图片裁剪
#import "UIImage+MJ.h" @implementation UIImage (MJ) + (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor { // 1.加载原图 UIImage *oldImage = [UIImage imageNamed:name]; // 2.开启上下文 CGFloat imageW = oldImage.size.width + 2 * borderWidth; CGFloat imageH = oldImage.size.height + 2 * borderWidth; CGSize imageSize = CGSizeMake(imageW, imageH); UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); // 3.取得当前的上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 4.画边框(大圆) [borderColor set]; CGFloat bigRadius = imageW * 0.5; // 大圆半径 CGFloat centerX = bigRadius; // 圆心 CGFloat centerY = bigRadius; CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0); CGContextFillPath(ctx); // 画圆 // 5.小圆 CGFloat smallRadius = bigRadius - borderWidth; CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0); // 裁剪(后面画的东西才会受裁剪的影响) CGContextClip(ctx); // 6.画图 [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)]; // 7.取图 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 8.结束上下文 UIGraphicsEndImageContext(); return newImage; }<strong> @end</strong>调用
- (void)viewDidLoad { [super viewDidLoad]; UIImage *newImage = [UIImage circleImageWithName:@"me" borderWidth:3 borderColor:[UIColor whiteColor]]; self.iconView.image = newImage; NSData *data = UIImagePNGRepresentation(newImage); NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"]; [data writeToFile:path atomically:YES]; }
3、屏幕截图
#import "UIImage+MJ.h" @implementation UIImage (MJ) + (instancetype)captureWithView:(UIView *)view { // 1.开启上下文 UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0); // 2.将控制器view的layer渲染到上下文 [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // 3.取出图片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 4.结束上下文 UIGraphicsEndImageContext(); return newImage; } @end
调用
- (IBAction)clip { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 1.捕捉 UIImage *newImage = [UIImage captureWithView:self.view]; // 2.写文件 NSData *data = UIImagePNGRepresentation(newImage); NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"]; [data writeToFile:path atomically:YES]; }); }
4,背景拉伸
- (void)imageBg { UIImage *oldImage = [UIImage imageNamed:@"me"]; UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0); [oldImage drawInRect:self.view.bounds]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.view.backgroundColor = [UIColor colorWithPatternImage:newImage]; }
5、背景平铺
- (void)viewDidLoad { [super viewDidLoad]; // self.view.backgroundColor = [UIColor redColor]; // 1.创建一行背景图片 CGFloat rowW = self.view.frame.size.width; // CGFloat rowH = 40; CGFloat rowH = 30; UIGraphicsBeginImageContextWithOptions(CGSizeMake(rowW, rowH), NO, 0.0); CGContextRef ctx = UIGraphicsGetCurrentContext(); // 画矩形框 [[UIColor redColor] set]; CGContextAddRect(ctx, CGRectMake(0, 0, rowW, rowH)); CGContextFillPath(ctx); // 2.画线 [[UIColor greenColor] set]; CGFloat lineWidth = 2; CGContextSetLineWidth(ctx, lineWidth); CGFloat dividerX = 0; CGFloat dividerY = rowH - lineWidth; CGContextMoveToPoint(ctx, dividerX, dividerY); CGContextAddLineToPoint(ctx, rowW - dividerX, dividerY); CGContextStrokePath(ctx); // 3.取图 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 4.结束上下文 UIGraphicsEndImageContext(); // 5.设置为背景 self.textView.backgroundColor = [UIColor colorWithPatternImage:newImage]; }
相关文章推荐
- iOS 基本图形的绘制 基于bitmap 位图
- iOS开发UI之Quartz2D使用(绘制基本图形)
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- iOS基本图形绘制--UIBezierPath
- iOS App开发中用CGContextRef绘制基本图形的基本示例
- ios-day14-01(使用Quartz 2D绘制基本图形——线、三角形、矩形、圆、圆弧、扇形、文字、图片等)
- ios 基本图形的绘制
- iOS Quartz2D的基本图形绘制
- iOS边练边学--(Quartz2D)基本图形的绘制#附加自定义进度控件的练习
- 『原创』DX图形显示基本流程(基于MESH静态模型绘制----托管代码)
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- ios基本图形绘制
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- iOS Quartz2D基本图形绘制
- 基于Visual C#的AutoCAD开发——实例11 绘制基本图形
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
- iOS-UI -- Quartz2D绘制基本图形
- iOS-UIBezierPath绘制基本图形
- iOS 【UIKit-Quartz2D使用(绘制基本图形)】
- iOS开发UI篇—Quartz2D使用(绘制基本图形)