BitMap类型的图形上下文

来源:互联网 发布:中文翻译蒙语软件下载 编辑:程序博客网 时间:2024/06/03 22:57


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]; 

 

 


0 0
原创粉丝点击