1,系统提供的几种图形上下文atom
Quartz2D提供了一下一种类型的Graphics Context(图形上下文):spa
Bitmap Graphics Context(图片类型的图形上下文)orm
PDF Graphics Context对象
Window Graphics Context图片
Layer Graphics Context(UI控件图形上下文)string
关于图片类型的上下文it
1>图片类型的上下文须要手动建立,大小也须要手动来传io
2>图片类型的上下文须要开启和关闭ast
3>使用图片类型上下文的一个好处是能够获取一个image对象 而且保存到沙盒或者相册当中object
4>图片类型的上下文能够在任何地方使用
2,图形上下文的开启和关闭
a.图形上下文的两种开启方法:
1,UIGraphicsBeginImageContext(CGSize size);
2,UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque,CGFloat scale);
通常状况下咱们使用的都是第二种方法
b.图形上下文的关闭方法
UIGraphicsEndImageContext();
c.参数解析:
CGSize size是开启一个BitMap类型的图形上下文的大小
BOOL opaque 是指BitMap类型的图形上下文是否透明(NO表示透明)
CGFloat scale 是指图形上下文的缩放比(通常状况填0便可)
若是CGFloat scale = 0,表示默认为设备的缩放比例,IPhone6默认为2,IPhone6plus默认为3;CGFloat scale = 0等价于CGFloat scale = [UIScreen mainScreen].scale(当前设备缩放比);
d.两种开启方法的区别
UIGraphicsBeginImageContext( CGSizeMake(200,200) );
该方法输出的图片的像素是200*200
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200),YES,3);
该方法输出的图片像素则是(200*3) * (200*3)即600*600
3,Bitmap类型图形上下文Demo
//开启图形上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200),YES,0);
//获取当前图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//绘制圆
CGContextAddArc(ctx, 100, 100, 80, 0, 2 * M_PI);
//渲染
CGContextStrokePath(ctx);
//从图形上下文中获取image对象
UIImage * image = UIGraphicsGetImageFormCurrentContext();
//获取doc的目录
NSString * path = [[NSSearchPathForDirectoresInDomains(NSDocument Directory,NSUserDomainMask,Yes) lastobject] stringByAppendingPathComponent:@"xx.jpg"];
//把image对象转化成data的对象
NSData * data = UIImageJPGRepresentation(iimage);
//经过data对象调用write to file的方法写入到沙盒当中
[data writeToFile:path atomically:YES];