iOS 使用Quartz 2D画虚线 .
画虚线需要用到函数:
CGContextSetLineDash
此函数需要四个参数:
- context – 这个不用多说
- phase - 稍后再说
- lengths – 指明虚线是如何交替绘制,具体看例子
- count – lengths数组的长度
- CGContextRef context =UIGraphicsGetCurrentContext();
- CGContextBeginPath(context);
- CGContextSetLineWidth(context, 2.0);
- CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor);
- float lengths[] = {10,10};
- CGContextSetLineDash(context, 0, lengths,2);
- CGContextMoveToPoint(context, 10.0, 20.0);
- CGContextAddLineToPoint(context, 310.0,20.0);
- CGContextStrokePath(context);
- CGContextClosePath(context);
CGContextRef context =UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor);
float lengths[] = {10,10};
CGContextSetLineDash(context, 0, lengths,2);
CGContextMoveToPoint(context, 10.0, 20.0);
CGContextAddLineToPoint(context, 310.0,20.0);
CGContextStrokePath(context);
CGContextClosePath(context);
lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复,如图:
如果把lengths值改为{10, 20, 10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复,如图:
注意count的值等于lengths数组的长度
phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:
- float lengths[] = {10,5};
- CGContextSetLineDash(context, 0, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 20.0);
- CGContextAddLineToPoint(context, 310.0, 20.0);
- CGContextStrokePath(context);
- CGContextSetLineDash(context, 5, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 40.0);
- CGContextAddLineToPoint(context, 310.0, 40.0);
- CGContextStrokePath(context);
- CGContextSetLineDash(context, 8, lengths, 2);
- CGContextMoveToPoint(context, 0.0, 60.0);
- CGContextAddLineToPoint(context, 310.0, 60.);
- CGContextStrokePath(context);
float lengths[] = {10,5};
CGContextSetLineDash(context, 0, lengths, 2);
CGContextMoveToPoint(context, 0.0, 20.0);
CGContextAddLineToPoint(context, 310.0, 20.0);
CGContextStrokePath(context);CGContextSetLineDash(context, 5, lengths, 2);
CGContextMoveToPoint(context, 0.0, 40.0);
CGContextAddLineToPoint(context, 310.0, 40.0);
CGContextStrokePath(context); CGContextSetLineDash(context, 8, lengths, 2);
CGContextMoveToPoint(context, 0.0, 60.0);
CGContextAddLineToPoint(context, 310.0, 60.);
CGContextStrokePath(context);
如图显示:
由于lengths值为{10,5},第一条线就是绘制10,跳过5,反复绘制。
第二条线的phase值为5,则首先绘制【10减去5】,再跳过5,绘制10,反复绘制。
第三条给也如此,先绘制2,再跳过5,如此反复。
转载于:https://www.cnblogs.com/gaoxiao228/archive/2012/12/04/2800984.html
iOS 使用Quartz 2D画虚线 .相关推荐
- iOS绘图——Quartz 2D使用方法
自定义UIView时,只需要重写drawRect:方法 使用Quartz 2D其实也很简单 首先必须要获取绘图的环境,即获取上下文CGContextRef 然后使用各种API进行绘图就可以了(这里有很 ...
- iOS 《Quartz 2D编程指南》之【图片裁剪】(包含完整demo源码) :
文章目录 前言 I.知识储备 1.1 核心步骤 II.例子 2.1 代码 2.2 用法 2.3 demo 仓库地址 前言 效果 I.知识储备 裁剪感兴趣的部分 Modifies the current ...
- iOS 《Quartz 2D编程指南》之【图片水印】(包含完整demo源码)
文章目录 前言 I.知识储备 1.1 核心步骤 II.例子 2.1 代码 2.2 用法 2.3 demo 仓库地址 前言 效果 I.知识储备 核心API @interface NSString(NSS ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- iOS开发之Quartz 2D绘图
2019独角兽企业重金招聘Python工程师标准>>> Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境 Quartz 2D API可以实现许多功能,如 ...
- quartz c语言,IOS学习之—— Quartz 2D (C语言的框架)
//************************************************************************************************** ...
- iOS 2D绘图详解(Quartz 2D)之概述
原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=list 前言:最近在研究自定义控件,由于想要彻底的定制控件的视图还是要继承UIView ...
- Quartz 2D Programming Guide笔记
###Graphics Contexts图形上下文### 图形上下文(graphics context)是绘制目标,可以理解为画布,包含着绘图时的参数和设备信息.类型为CGContextRef.获取g ...
- iPhone开发笔记[1/50]:初学iPhone上用Quartz 2D画图
参考了An iOS 4 iPhone Graphics Drawing Tutorial using Quartz 2D这篇文章,用了30分钟在iPhone上画出了一条直线,核心代码全在drawRec ...
最新文章
- [转]HTTP协议详解
- NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘
- Python Django 自定义Manager重写objects.create()方法代码示例
- JavaSE各阶段练习题----集合-Collection-Set-List
- Java开发必会的反编译知识
- 调用gserverdkey dll的飞鸽传书2012
- Passing the Message(HDU-3410)
- 史上最快! 10小时大数据入门(一)-大数据概述
- 累计增量备份策略_数据安全与备份解决方案ZDLRA快速恢复
- [P4063][JXOI2017]数列(DP)
- 【Linux】Linux Systemd 启动守护进程
- 二维码_encode与decode
- css绘制向左三角形_CSS绘制三角形—border法
- 对区块链撒谎:将“垃圾进,垃圾出”问题应用在去中心化网络上
- 学生免费获取PyCharm专业版
- wps如何在目录里面打省略号_wps中目录的点怎么打(目录的点点怎样手动打)
- 02 - 语义网络,语义网,链接数据和知识图谱
- cmd命令重启服务器
- [ZT]迅雷的工作原理
- 谷歌SEO中PBN外链是否值得做
热门文章
- 不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100%
- 进程与线程的一个简单解释
- AI在软硬件开发中的应用落地!
- 机器学习数学基础:常见分布与假设检验
- CV十年发展之观察:1.5万篇论文透视「业界」与「学界」,到底谁更胜一筹?...
- 超越PVT、Swin,南大开源高效Transformer:ResT​
- 小心!你下载的机器学习工具包可能是病毒:CuPy被掉包,官方一天后才发现
- 理解卷积神经网络中的自注意力机制
- 十九种损失函数,你能认识几个?
- Linux内核网络栈1.2.13-tcp.c概述