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简介的更多相关文章

  1. Quartz2D简介及基本线条绘制

    * Quartz2D简介 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统 2.Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView. 3 ...

  2. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  3. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

  4. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

  5. IOS AFNetworking简介及使用

    转:http://www.it165.net/pro/html/201405/13099.html 一AFNetworking简介AFNetworking是一个在IOS开发中使用非常多网络开源库,适用 ...

  6. iOS Quartz2D画图

    对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系 ...

  7. iOS多线程简介

    1.进程 什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开迅雷.Xcode,系统就会分别启动2个进程 2.线程 什么是 ...

  8. Quartz2D简介

    Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作:

  9. ios - cordova 简介

    Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的 ...

随机推荐

  1. smartjs 0.3 DataManager 发布&介绍

    在0.3版加入了DataManager,基于策略的数据管理模块:是SmartJS中比较重要的一个系列.整个个DataManager模块包括有:dataManager,dataPolicyManager ...

  2. 解决 Tomcat 无法绑定 80 端口的问题,以及 Tomcat 配置虚拟目录、二级域名等

    问题 今天安装完 Tomcat,安装时把 Tomcat 默认的 HTTP/1.1 Connector Port 从 8080 改为了 7080,启动 Tomcat,在浏览器中输入 Http://loc ...

  3. 搭建windows下filezilla FTP服务器

    FTP服务器必不可少,鉴于serv-u越来越冗余繁多的设置,个人还是比较喜欢简单.干净,满足需求即可的东东,所以选择filezilla.更主要的原因是ta是开元免费使用的,虽然免费,功能却齐全,我发现 ...

  4. ruby -- 问题解决(二)rails4.0create引起的ActiveModel::ForbiddenAttributesError错误

    之前将rails升级到4.0版本,发生了ActiveModel::ForbiddenAttributesError错误 于是上网溜达了一会,找到解决方案, ActiveModel::Forbidden ...

  5. bootstrap插件学习-bootstrap.popover.js

    先看bootstrap.popover.js的结构 var Popover = function ( element, options ){} //构造器 Popover.prototype = {} ...

  6. 什么是https?

    很久之前注意到了https这个新出来的协议,当时感觉到只是一个加密的协议,然后没有什么关注,只知道他和http的区别就在于加密,最近突然很多人问起了这个https到底是什么?于是上网查了查资料,总结之 ...

  7. Orleans之Hello World

    接触Orleans 有一段时间了,之前也翻译了一系列官网文档,今天我们就来一个实际的例子,来看看到底如何用这个东西来开发项目,当然经典的也是醉人的,我们就从HelloWorld开始吧. 通过前面的知识 ...

  8. 20161119微信小程序初识

    Tritonal ft. Angel Taylor - Getaway [Official Lyric Video]

  9. c#通用递归生成无限层级树

    NewsType结构: Id ParentId Name children(List<NewsType>) public void LoopToAppendChildren(List< ...

  10. 简单使用Dos命令关闭计算机

    作为一个刚进It行业的新手,我比较喜欢搜寻一些对我有帮助的东西,下面是用本机的dos命令关机的例子: 用window+r打开运行窗口,输入cmd,进入控制台,查找关机的相关命令,输入shutdown. ...