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. HTML注释引起的问题

    因为规范要求需要对页面进行说明,添加作者等信息,所以在cshtml的代码中添加了html注释,包括之前使用jsp也是这样做的: 在页面布局的时候,需要对高度进行动态计算,IE8以上没有问题,主要是在I ...

  2. jQuery 1.9 Ajax代码带注释

    /* -----------ajax模块开始 -----------*/ var // Document location ajaxLocParts, ajaxLocation, ajax_nonce ...

  3. LoRaWAN移植笔记(一)__RTC闹钟链表的实现

    近日在阅读semtech的Lora-net/LoRaMac-node.此代码是LoRaWAN MAC层的node段的代码. 此代码中构建了一个定时器链表,此链表构建得非常的巧妙,现在和大家分享. 此定 ...

  4. iOS-appStore发布流程

    appStore上传苹果应用程序软件发布流程http://blog.sina.com.cn/s/blog_68661bd801019uzd.html

  5. LeetCode——Find Median from Data Stream

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  6. LVS使用整理(1)

    开始安装LVS 1)下载相关软件包 mkdir -p /home/tools/cd /home/tools/wget http://www.linuxvirtualserver.org/softwar ...

  7. ASP.NET MVC5--添加验证

    1.在Model类里面添加验证,代码如下: public class Movie { public int ID { get; set; } [StringLength(,MinimumLength= ...

  8. C#写文本日志帮助类(支持多线程)

    代码: using System; using System.Configuration; using System.IO; using System.Threading.Tasks; namespa ...

  9. JavaScript语言知识收藏

    接触Web开发也已经有一段时间了,对javascript的认识也比以前有了更加深入的认识了,所以觉得应该整理一下. 一.JavaScript不支持函数(方法)的重载,用一个例子证明如下: functi ...

  10. ASP.NET MVC进阶二

    一.数据验证 数据验证的步骤 在模型类中添加与验证相关的特性标记 在客户端导入与验证相关的js文件和css文件 使用与验证相关的Html辅助方法 在服务器端判断是否通过服务器端验证 常用的验证标记 R ...