BitMap类型的图形上下文
BitMap类型的图形上下文
哪一种黑 发表于2年前
BitMap类型的图形上下文
  • 发表于 2年前
  • 阅读 17
  • 收藏 0
  • 点赞 2
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 主要内容: 1,系统提供的几种图形上下文 2,图形上下文的开启与关闭 3,BitMap类型上下文的一个demo

1,系统提供的几种图形上下文

Quartz2D提供了一下一种类型的Graphics Context(图形上下文):

Bitmap Graphics Context(图片类型的图形上下文)

PDF Graphics Context

Window Graphics Context

Layer Graphics Context(UI控件图形上下文)


关于图片类型的上下文

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

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

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

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



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 8
博文 11
码字总数 9722
×
哪一种黑
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: