Quartz 2D在ios中的使用简述二:创建画布
在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作。先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型。
- #include <CoreGraphics/CGBase.h>
- #include <CoreGraphics/CGAffineTransform.h>
- #include <CoreGraphics/CGBitmapContext.h>
- #include <CoreGraphics/CGColor.h>
- #include <CoreGraphics/CGColorSpace.h>
- #include <CoreGraphics/CGContext.h>
- #include <CoreGraphics/CGDataConsumer.h>
- #include <CoreGraphics/CGDataProvider.h>
- #include <CoreGraphics/CGError.h>
- #include <CoreGraphics/CGFont.h>
- #include <CoreGraphics/CGFunction.h>
- #include <CoreGraphics/CGGeometry.h>
- #include <CoreGraphics/CGGradient.h>
- #include <CoreGraphics/CGImage.h>
- #include <CoreGraphics/CGLayer.h>
- #include <CoreGraphics/CGPDFArray.h>
- #include <CoreGraphics/CGPDFContentStream.h>
- #include <CoreGraphics/CGPDFContext.h>
- #include <CoreGraphics/CGPDFDictionary.h>
- #include <CoreGraphics/CGPDFDocument.h>
- #include <CoreGraphics/CGPDFObject.h>
- #include <CoreGraphics/CGPDFOperatorTable.h>
- #include <CoreGraphics/CGPDFPage.h>
- #include <CoreGraphics/CGPDFScanner.h>
- #include <CoreGraphics/CGPDFStream.h>
- #include <CoreGraphics/CGPDFString.h>
- #include <CoreGraphics/CGPath.h>
- #include <CoreGraphics/CGPattern.h>
- #include <CoreGraphics/CGShading.h>
可以看到,可以创建的上下文包括:
- //图片
- CGContextRef CGBitmapContextCreate
- //layer(UIView)
- CGContextRef CGLayerGetContext
- //pdf类型
- CGContextRef CGPDFContextCreate
我们再看下UIGraphics.h这个头文件,里面已经提供这3种上下文创建的封装给UIKit使用的方法,在普通的情况下,使用UIGraphics中的方法即可,而且画布已经做了坐标的翻转。
UIKIT_EXTERN CGContextRef UIGraphicsGetCurrentContext(void) CF_RETURNS_NOT_RETAINED;
表示是个弱引用类型,直接使用,不用释放。
- UIGraphicsBeginImageContext(self.bounds.size);
- CGContextRef context=UIGraphicsGetCurrentContext();
- CGContextSetRGBFillColor(context, , , , );
- CGContextSetRGBStrokeColor(context, , , , );
- CGContextFillRect(context, CGRectMake(, , , ));
- NSString *text=@"文字";
- UIFont *font=[UIFont systemFontOfSize:];
- [text drawAtPoint:CGPointMake(, ) withAttributes:font.fontDescriptor.fontAttributes];
- UIImage *img=[UIImage imageNamed:@"gg.jpg"];
- [img drawInRect:CGRectMake(, , , )];
- CGImageRef cgimg = CGBitmapContextCreateImage(context);
- UIImage *resultImg = [UIImage imageWithCGImage:cgimg];
- CGImageRelease(cgimg);
Quartz 2D在ios中的使用简述二:创建画布的更多相关文章
- Quartz 2D在ios中的使用简述一:坐标体系
Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境,官方文档:Quartz 2D Programming Guide. 一.坐标体系 这样的坐标体系就导致我们使用Quart ...
- 在iOS中使用ZBar扫描二维码
最近在做的项目中需要用到二维码扫描功能,之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Andro ...
- 使用.NET中的XML注释(二) -- 创建帮助文档入门篇
一.摘要 在本系列的第一篇文章介绍了.NET中XML注释的用途, 本篇文章将讲解如何使用XML注释生成与MSDN一样的帮助文件.主要介绍NDoc的继承者:SandCastle. 二.背景 要生成帮助文 ...
- Quartz 2D编程指南- PDF文档的创建、显示及转换
PDF文档存储依赖于分辨率的向量图形.文本和位图,并用于程序的一系列指令中.一个PDF文档可以包含多页的图形和文本.PDF可用于创建跨平台.只读的文档,也可用于绘制依赖于分辨率的图形. ...
- iOS中多线程知识总结(二)
1.GCD GCD全称是Grand Central Dispatch,译为"强大的中枢管理器" 1)什么是任务?什么是队列? 任务和队列是GCD的核心. 任务: 执行什么操作 队列 ...
- iOS中Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题.这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因. 一.block放在哪里 我们针对不同情 ...
- iOS中的图像处理(二)——卷积运算
关于图像处理中的卷积运算,这里有两份简明扼要的介绍:文一,文二. 其中,可能的一种卷积运算代码如下: - (UIImage*)applyConvolution:(NSArray*)kernel { C ...
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后 ...
- ios中字典转模型的创建以及简单用法
// appModel.h // Created by zzqqrr on 17/8/19. // #import <Foundation/Foundation.h> @interface ...
随机推荐
- Node的express框架安装
第一步:在cmd命令行下执行npm install -g express,安装全局的express. 第二步:在命令行中输入express,如果出现express不是内部命令时, 输入npm inst ...
- 动态创建 Lambda 表达式
首先我们看一个简单 Lambda 表达式的构成. i => i > 5 在这个表达式中,"i" 被称为 Parameter,"i > 5" 是 ...
- Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
首先需要说明,这个问题的出现需要几个前提:使用微软的Oracle驱动(使用Oracle自己的驱动不会出现这个问题).使用绑定变量法,使用Format等方式拼接SQL也不会出现这个问题,还有一些诡异的规 ...
- Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/ 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁 ...
- fragment嵌套问题
fragment嵌套里面不能用再用getActivity().getFragmentManager()要用getChildFragmentManager()
- 进击的Python【第十七章】:jQuery的基本应用
进击的Python[第十七章]:jQuery的基本应用
- Codeforces 144D Missile Silos 最短路
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- jQuery之ajax错误调试分析
jQuery中把ajax封装得非常好.但是日常开发中,我偶尔还是会遇到ajax报错.这里简单分析一下ajax报错 一般的jQuery用法如下,ajax通过post方式提交"汤姆和老鼠&quo ...
- 【虚拟机】在VMware中安装Server2008之后配置网络连接的几种方式
VMware虚拟机的网络连接方式分为三种:桥接模式.NAT模式.仅主机(Host Only) (1)桥接模式 桥接模式即在虚拟机中虚拟一块网卡,这样主机和虚拟机在一个网段中就被看作是两个独立的IP地址 ...
- XVII Open Cup named after E.V. Pankratiev. GP of SPb
A. Array Factory 将下标按前缀和排序,然后双指针,维护最大的右边界即可. #include<cstdio> #include<algorithm> using ...