标签:
1。
// 1.获取上下文(位图上下文) 这个方法上下文都可以获取。不只是layer上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
0.获取上下文,之前的上下文都是在view的drawRect方法中获取(跟View相关联的上下文layer上下文)
// 目前我们需要绘制图片到新的图片上,因此需要用到位图上下文
/ 怎么获取位图上下文,注意位图上下文的获取方式跟layer上下文不一样。位图上下文需要我们手动创建。
// 开启一个位图上下文,注意位图上下文跟view无关联,所以不需要在drawRect.
// size:位图上下文的尺寸(新图片的尺寸)
// opaque: 不透明度 YES:不透明 NO:透明,通常我们一般都弄透明的上下文
// scale:通常不需要缩放上下文,取值为0,表示不缩放
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
#import "ViewController.h"
// 在图片的基础绘制一些文字或者Logo,最终生成一张图片
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 加载图片
UIImage *image = [UIImage imageNamed:@"小黄人"];
// 0.获取上下文,之前的上下文都是在view的drawRect方法中获取(跟View相关联的上下文layer上下文)
// 目前我们需要绘制图片到新的图片上,因此需要用到位图上下文
// 怎么获取位图上下文,注意位图上下文的获取方式跟layer上下文不一样。位图上下文需要我们手动创建。
// 开启一个位图上下文,注意位图上下文跟view无关联,所以不需要在drawRect.
// size:位图上下文的尺寸(新图片的尺寸)
// opaque: 不透明度 YES:不透明 NO:透明,通常我们一般都弄透明的上下文
// scale:通常不需要缩放上下文,取值为0,表示不缩放
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
// //贝泽尔曲线之所以可以用是因为上面获取了一个上下文对象
// UIBezierPath*berPath=[UIBezierPath bezierPathWithArcCenter:CGPointMake(100,100) radius:100 startAngle:0 endAngle:M_PI*2 clockwise:YES];
//
// berPath.lineWidth=3;
// [[UIColor redColor] setStroke];
// [[UIColor greenColor]setFill];
// [berPath stroke];
// [berPath fill];
UIBezierPath*path=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 300, 300)];
[[UIColor redColor]setStroke];
[[UIColor yellowColor]setFill];
[path fill];
[path stroke];
// 1.获取上下文(位图上下文) 这个方法上下文都可以获取。不只是layer上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2.描述路径
CGContextMoveToPoint(ctx, 50, 50);
CGContextAddLineToPoint(ctx, 200, 200);
[[UIColor redColor] setStroke];
// 3.渲染上下文
CGContextStrokePath(ctx);
// CGContextRef contextRef=UIGraphicsGetCurrentContext();
//
// CGContextMoveToPoint(contextRef, 40, 40);
//
// CGContextAddLineToPoint(contextRef, 200, 200);
//
// [[UIColor redColor] setStroke];
//
// CGContextStrokePath(contextRef);
// UIBezierPath *path =[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 300, 300)];
//
// [[UIColor redColor] set];
// [path stroke];
// // 1.绘制原生的图片
// [image drawAtPoint:CGPointZero];
//
// // 2.给原生的图片添加文字
// NSString *str = @"小码哥";
//
// // 创建字典属性
// NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// dict[NSForegroundColorAttributeName] = [UIColor redColor];
// dict[NSFontAttributeName] = [UIFont systemFontOfSize:20];
//
// [str drawAtPoint:CGPointMake(200, 528) withAttributes:dict];
// 3.生成一张图片给我们,从上下文中获取图片
UIImage *imageWater = UIGraphicsGetImageFromCurrentImageContext();
// 4.关闭上下文
// UIGraphicsEndImageContext();
_imageView.image = imageWater;
}
XMG Quartz2D 水印效果。非layer里面手动创建位图上下文,不是layer中drawRect系统自动创建上下文
标签:
原文地址:http://blog.csdn.net/u012131827/article/details/51352504