IOS Quartz2D简介
Quartz2D 简介( 后续会有相关应用)
第一部分 绘制直线
代码示例:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//开始画图
//设置直线起点
CGContextMoveToPoint(cxContext, , );
//设置直线中点
CGContextAddLineToPoint(cxContext, , );
//渲染
CGContextStrokePath(cxContext);
}
效果图:

我们只用了四行代码就在view画出了一条直线,但是会觉得很枯燥,知识一条黑色的直线而已。
这样我们给他添点属性。
为了测试我首先只给他添加了颜色
示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//开始画图
//设置直线起点
CGContextMoveToPoint(cxContext, , );
//设置直线中点
CGContextAddLineToPoint(cxContext, , );
//设置颜色
CGContextSetRGBStrokeColor(cxContext, , , , );
//渲染
CGContextStrokePath(cxContext);
}
效果图:

可以看到他变为了红色。
再分析我所添加的代码,可以猜想还有宽度等等。
下面我在添加一下宽度。
示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//开始画图
//设置直线起点
CGContextMoveToPoint(cxContext, , );
//设置直线中点
CGContextAddLineToPoint(cxContext, , );
//设置颜色
CGContextSetRGBStrokeColor(cxContext, , , , );
//设置宽度
CGContextSetLineWidth(cxContext, );
//渲染
CGContextStrokePath(cxContext);
}
效果图:

到这里简单绘制直线我们已经可以掌握了,但是如果多考率一下的话不难想到,如果我们现在花两条没有交点的线(我们可以通过CGContextAddLineToPoint继续添加线)该如何区分呢。
下面介绍一下路径path,我们可以通过它绘制线并且区分。
示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//创建2条路径
CGMutablePathRef path1 = CGPathCreateMutable();
CGMutablePathRef path2 = CGPathCreateMutable();
//开始画图
//绘制第一条直线
CGPathMoveToPoint(path1, NULL, , );
CGPathAddLineToPoint(path1, NULL, , );
//绘制第二条直线
CGPathMoveToPoint(path2, NULL, , );
CGPathAddLineToPoint(path2, NULL, , );
//把路径添加到上下文中
CGContextAddPath(cxContext, path1);
CGContextAddPath(cxContext, path2);
//渲染
CGContextStrokePath(cxContext);
//释放 因为是CG所以需要手动释放
CGPathRelease(path1);
CGPathRelease(path2);
}
效果图:

第二部分 绘制图形
示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//绘制矩形
CGContextAddRect(cxContext, CGRectMake(, , , ));
//渲染
CGContextStrokePath(cxContext);
}
效果图:

示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//绘制圆
CGContextAddArc(cxContext, , , , , M_PI, );
//渲染
CGContextStrokePath(cxContext);
}
效果图:

第三部分 绘制文字
示例代码:
- (void)drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef cxContext = UIGraphicsGetCurrentContext();
//绘制矩形
CGContextAddRect(cxContext, CGRectMake(, , , ));
//渲染
CGContextStrokePath(cxContext);
//文字内容
NSString *str = @"旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼旭宝爱吃鱼";
//将文字绘制到指定区域 自动换行 抽出范围后不显示
[str drawInRect:CGRectMake(, , , ) withAttributes:nil];
//将文字绘制到指定点
// [str drawAtPoint:CGPointMake(0, 0) withAttributes:nil];
}
效果图:

第四部分 绘制图片
实例代码:
- (void)drawRect:(CGRect)rect{
UIImage * image = [UIImage imageNamed:@"2.jpg"];
//平铺
[image drawAsPatternInRect:self.bounds];
}
效果图:

示例代码:
- (void)drawRect:(CGRect)rect{
UIImage * image = [UIImage imageNamed:@"2.jpg"];
//拉伸
[image drawInRect:self.bounds];
}
效果图:

实例代码:
- (void)drawRect:(CGRect)rect{
UIImage * image = [UIImage imageNamed:@"2.jpg"];
//原图指定位置(图片的左上点)
[image drawAtPoint:self.center];
}
效果图:

IOS Quartz2D简介的更多相关文章
- Quartz2D简介及基本线条绘制
* Quartz2D简介 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统 2.Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView. 3 ...
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- IOS AFNetworking简介及使用
转:http://www.it165.net/pro/html/201405/13099.html 一AFNetworking简介AFNetworking是一个在IOS开发中使用非常多网络开源库,适用 ...
- iOS Quartz2D画图
对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...
- iOS多线程简介
1.进程 什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开迅雷.Xcode,系统就会分别启动2个进程 2.线程 什么是 ...
- Quartz2D简介
Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作:
- ios - cordova 简介
Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的 ...
随机推荐
- MyBatis知多少(5)业务对象模型
几乎所有结构良好的软件都使用了分层设计.分层设计将一个应用程序根据技术职能分为几 个内聚的部分,从而将某种特定技术或接口的实现细节与其他部分分离开来.分层设计可以用任 何一种强壮的编程语言来实现.图1 ...
- EF相关知识
一.EF控制台命令: 1.enable-migrations -EnableAutomaticMigration -Force:使用自动迁移 2.add-migration "Country ...
- 左倾堆(一)之 图文解析 和 C语言的实现
概要 本章介绍左倾堆,它和二叉堆一样,都是堆结构中的一员.和以往一样,本文会先对左倾堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理 ...
- 剑指架构师系列-tomcat6通过伪异步实现connector
首先在StandardService中start接收请求的线程,如下: synchronized (connectors) { for (int i = 0; i < connectors.le ...
- Linux shell tee指令学习
转载自:http://blog.163.com/xujian900308@126/blog/static/12690761520129911304568/ tee tee:读取标准输入的数据,并将 ...
- NoSuchMethodError: antlr.collections.AST.getLine()I
错误完整表述: Filter execution threw an exception] with root cause java.lang.NoSuchMethodError: antlr.coll ...
- Android 学习笔记之ContentProvider实现数据共享....
PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...
- python面向对象编程(下)
本篇详细介绍了Python 中类的成员.成员修饰符.类的特殊成员以及两个综合运用实例. 环境为:python3.5.1 类的成员 类的成员包括三大类:字段.方法和property属性 注:关于这三类成 ...
- SQL 分类统计函数
SELECT TransactionNumber,SUM(CASE WHEN ReasonLevel=0 THEN TransactionNumber ELSE 0 end ) a ...
- Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...