文档章节

BitMap类型的图形上下文

哪一种黑
 哪一种黑
发布于 2016/02/29 20:28
字数 565
阅读 23
收藏 0

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
作品 0
昌平
私信 提问
Quartz 2D绘图

概况 是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和...

_誌念
2017/08/26
0
0
裁剪图片并保存到相册中

1.加载要裁剪的图片 2.开启一个和图片一样大小的图像上下文(bitmap 图片类型的上下文) UIGraphicsBeginImageContextWithOptions(ctxSize, NO, 0.0); 3.获取刚刚开启的图像上下文 CGContex...

如若初见
2016/04/11
46
0
iOS开发CoreGraphics核心图形框架之二——深入理解图形上下文

iOS开发CoreGraphics核心图形框架之二——深入理解图形上下文 一、引言 在上一篇博客中,介绍了有关CGPath绘制路径的相关方法,其中在View视图的drawRect方法中,已经使用过上下文将Path路径...

珲少
2016/10/16
292
0
在ASP.NET中随意创建图形信息

如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点在ASP.NET中改变了。现在,我们只需要使用内置功能,就能够...

晨曦之光
2012/03/09
26
0
C#抓屏

要想完成这个功能,首先要了解一下在C#中如何调用API(应用程序接口)函数。虽然在.Net框架中已经提供了许多类库,这些类库的功能也十分强大,但对于一些Windows底层编程来说,还是要通过调...

晨曦之光
2012/03/09
210
0

没有更多内容

加载失败,请刷新页面

加载更多

徒手撸一个简单的RPC框架

徒手撸一个简单的RPC框架 之前在牛逼哄哄的 RPC 框架,底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化、动态...

不学无数的程序员
32分钟前
1
0
Java 面试题目最全集合1000+ 大放送,能答对70%就去BATJTMD试试~

2019,相对往年我们会发现今年猎头电话少了,大部分企业年终奖缩水,加薪幅度也不如往年,选择好offer就要趁早,现在开始准备吧,刷一波Java面试题,能回答70%就去BATJTMD大胆试试~ 以下是2...

mikechen优知
37分钟前
2
0
玩转Koa之核心原理分析

Koa作为下一代Web开发框架,不仅让我们体验到了async/await语法带来同步方式书写异步代码的酸爽,而且本身简洁的特点,更加利于开发者结合业务本身进行扩展。 本文从以下几个方面解读Koa源码...

前端小攻略
38分钟前
1
0
分布式之数据库和缓存双写一致性方案解析

为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 ![] 但是在更新缓存方面,对于更新...

hensemlee
今天
5
0
怎么学习大数据

最近有很多人在找,大数据是怎么学?需要学什么技术以及这些技术的学习顺序是什么?今天有时间我把个问题总结成文章分享给大家。 那大数据处理技术怎么学习呢?首先我们要学习Java语言和Lin...

董黎明
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部