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 直接操作本地数据库的 ...
 
随机推荐
- Android 学习笔记 Service服务与远程通信...(AIDL)
			
PS:这一章节看的我有几分迷茫,不是很容易理解...不过还好总算是明白了一大半了...基本的迷惑是解决了... 学习内容: 1.跨应用启动服务... 2.跨应用绑定服务... 3.跨应用实现通信... ...
 - UIApplication和delegate代理
			
所有的移动操作系统都有个致命的缺点:app很容易受到打扰,比如一个来电或者锁屏都会导致app进入后台甚至被终止 还有很多其他类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这是 ...
 - Java向前引用容易出错的地方
			
所谓向前引用,就是在定义类.接口.方法.变量之前使用它们,例如, class MyClass { void method() { System.out.println(myvar); } String ...
 - Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
			
一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过 ...
 - HTML5使用ApplicationCache
			
在html5中使用application cache可以把一些静态资源保存在客户端的浏览器上面.这样可以提高访问的速度,甚至是离线应用.关于application cache的优缺点:1.离线浏览 - ...
 - 你得知道这3个最基础的APP技术框架
			
出处:优设网作者:信籽链接:http://www.uisdc.com/3-basic-app-technical-framework 信籽(手淘设计师):不知道大家有没有遇到过这种情景,当你做好一个设 ...
 - WPF关闭应用程序方法
			
很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是 ...
 - 如何用c语言调用c++做成的动态链接库
			
今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小 ...
 - 数据库一次性插入10w条数据,怎么插入效率快
			
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题 下面介绍SQL Server支持的两种批量 ...
 - 不可或缺 Windows Native (1) - C 语言: hello c
			
[源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...