BitMap类型的图形上下文


1. 系统提供的上下文

Quartz2D提供了以下几种类型的GraphicsContext:

>Bitmap GraphicsContext(图片类型的上下文)

>> PDF Graphics Context

>> Window Graphics Context

>> Layer Graphics Context (UI控件)

>> Printer Graphics Context

关于图片类型的上下文:

1>  图片类型的上下文需要手动创建,大小也需要手动来传。

2>  图片类型的上下文需要开启和关闭;

3>  使用图片类型上下文的一个好处是可以获取一个image对象,并且保存到沙盒或者相册中;

4>  图片类型的上下文可以在任何地方使用。

2. 图形上下文的开启与关闭

a.图片上下文的两种开启方法:

void  UIGraphicsBeginImageContext(CGSize size);

void  UIGraphicsBeginImageContextWithOptions(CGSizesize, BOOL opaque, CGFloat scale)【一般只用这个方法】

b.图片上下文的关闭方法:

void  UIGraphicsEndImageContext(void);

c.参数解析:

CGSizesize 是开启一个Bitmap 类型的图形上下文的大小

BOOLopaque Bitmap 类型的图形上下文是否透明(NO表示透明)

CGFloatscale    缩放因子(一般设置为0)

如果CGFloat scale = 0 表示默认为设备的缩放因子,iPhone6时为2,iPhone6plus时为3;

d.两种开启方法的区别:

UIGraphicsBeginImageContext(CGSizeMake(200,200));

该方法输出的图片的像素是200*200;

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200), NO, 3);

该方法输出的图片的像素是(200*3)*(200*3),即600*600

两个开启方法的等价方式:

UIGraphicsBeginImageContext(CGSizeMake(200,200)) <=>

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200), NO, 1);

 

3. Bitmap类型上下文的一个Demo

// 开启图片上下文

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200,200), NO, 0);

// 获取当前的上下文

CGContextRefctx = UIGraphicsGetCurrentContext();

// 绘制圆

CGContextAddArc(ctx,100, 100, 80, 0, 2 * M_PI, 1);

// 渲染

CGContextStrokePath(ctx);

// 从图片类型的上下文当中 取出 image对象

UIImage*image = UIGraphicsGetImageFromCurrentImageContext();

// 关闭图片上下文

UIGraphicsEndImageContext();

// 获取doc的目录

NSString*    docPath  =

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)[0];

// 文件的路径

NSString*    filePath =

[docPathstringByAppendingPathComponent:@"xx.png"];

// 把image对象转化成data的对象

NSData*data = UIImagePNGRepresentation(image);

// 通过data对象 调用write to file 的方法写入到沙盒当中

[datawriteToFile:filePath atomically:YES]; 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值