画虚线需要用到函数:

CGContextSetLineDash

此函数需要四个参数:

  • context – 这个不用多说
  • phase - 稍后再说
  • lengths – 指明虚线是如何交替绘制,具体看例子
  • count – lengths数组的长度
  1. CGContextRef context =UIGraphicsGetCurrentContext();
  2. CGContextBeginPath(context);
  3. CGContextSetLineWidth(context, 2.0);
  4. CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor);
  5. float lengths[] = {,};
  6. CGContextSetLineDash(context, , lengths,);
  7. CGContextMoveToPoint(context, 10.0, 20.0);
  8. CGContextAddLineToPoint(context, 310.0,20.0);
  9. CGContextStrokePath(context);
  10. CGContextClosePath(context);

lengths的值{10,10}表示先绘制10个点,再跳过10个点,如此反复,如图:

如果把lengths值改为{10, 20, 10},则表示先绘制10个点,跳过20个点,绘制10个点,跳过10个点,再绘制20个点,如此反复,如图:

注意count的值等于lengths数组的长度

phase参数表示在第一个虚线绘制的时候跳过多少个点,举例说明:

  1. float lengths[] = {,};
  2. CGContextSetLineDash(context, , lengths, );
  3. CGContextMoveToPoint(context, 0.0, 20.0);
  4. CGContextAddLineToPoint(context, 310.0, 20.0);
  5. CGContextStrokePath(context);
  6.  
  7. CGContextSetLineDash(context, , lengths, );
  8. CGContextMoveToPoint(context, 0.0, 40.0);
  9. CGContextAddLineToPoint(context, 310.0, 40.0);
  10. CGContextStrokePath(context);
  11.  
  12. CGContextSetLineDash(context, , lengths, );
  13. CGContextMoveToPoint(context, 0.0, 60.0);
  14. CGContextAddLineToPoint(context, 310.0, .);
  15. CGContextStrokePath(context);

如图显示:

由于lengths值为{10,5},第一条线就是绘制10,跳过5,反复绘制。

第二条线的phase值为5,则首先绘制【10减去5】,再跳过5,绘制10,反复绘制。

第三条给也如此,先绘制2,再跳过5,如此反复。

原文:http://blog.csdn.net/zhouleizhao/article/details/38655761

ios 绘制虚线 CGContextSetLineDash的使用的更多相关文章

  1. iOS 使用drawRect: 绘制虚线椭圆

    iOS 使用drawRect: 绘制虚线椭圆 1:首先如果要使用 drawRect 绘图 要导入 CoreGraphics.framework 框架 然后 创建 自定义view, 即是 myView继 ...

  2. iOS 学习 - 16.绘制虚线

    //绘制虚线 -(void)set{ UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , , )]; [ ...

  3. UIKit和Core Graphics绘图(三)——绘制虚线,椭圆以及饼图

    绘制虚线 虚线绘制主要调用CGContextSetLineDash函数. 这个函数有4个参数,除了一个是上下文外,phase为初始跳过几个点开始绘制,第三个参数为一个CGFloat数组,指定你绘制的样 ...

  4. canvas学习总结三:绘制虚线

    上一章节我们说到,线性路径的绘制,主要利用movoTo(),lineTo()等方法,当然 Canvas 2D API 也提供了虚线的绘制方法,CanvasRenderingContext2D.setL ...

  5. 【Android使用Shape绘制虚线,在4.0以上的手机显示实线】解决方式

    问题描写叙述: 用下面代码绘制虚线: <span style="font-family:Comic Sans MS;font-size:18px;"><? xml ...

  6. canvas学习总结四:绘制虚线

    上一章节我们说到,线性路径的绘制,主要利用movoTo(),lineTo()等方法,当然 Canvas 2D API 也提供了虚线的绘制方法,CanvasRenderingContext2D.setL ...

  7. 【转】Android Shape绘制虚线在手机端查看是实线的问题

    Android share绘制虚线在手机上显示实线问题 给控件添加Drawableleft等图片后,单独给图片设置动画效果,参考文章: http://blog.csdn.net/langzxz/art ...

  8. 绘制虚线的UIView

    绘制虚线的UIView CAShapeLayer配合贝塞尔曲线可以绘制曲线,笔者继承了一个UIView的子类,并将该子类的backedLayer替换为CAShapeLayer,以此来实现绘制虚线的效果 ...

  9. CAD交互绘制虚线(网页版)

    用户可以在CAD控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE ...

随机推荐

  1. 【Lintcode】136.Palindrome Partitioning

    题目: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

  2. 【LeetCode】051. N-Queens

    题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...

  3. Python 静态方法和类方法的区别

    python staticmethod and classmethod Though classmethod and staticmethod are quite similar, there’s a ...

  4. sql基础内容2

    -- day16课程内容 --CREATE DATABASE day16;USE day16; -- *************一.数据约束********************------ 1.1 ...

  5. java基础之框架篇(1)

    框架基础反射:反射是Java开发的一类动态相关机制.因为本身Java语言并不是一款动态语言,如果我们想要得到程序动态的效果,因此便引入了反射机制这一概念. 问题:Java中创建实例化对象有哪些方式? ...

  6. CF-811B

    B. Vladik and Complicated Book time limit per test 2 seconds memory limit per test 256 megabytes inp ...

  7. 教程:动手用自己电脑搭建一个网站 (nat123 花生壳 动态域名 个人电脑做服务器)

    先ps一下..今晚试了N种方法,终于找到一个靠谱 免费 好用的方法,来改装自己电脑成为服务器,在外网也能通过域名访问了!!! 需要准备的东西: Tomcat:这个是web容器,其实有了这个就已经让电脑 ...

  8. 2.5玩转xargs

    我们可以利用管道将一个命令的stdout(标准输出)重定向到另一个命令的stdin(标准输入).有些命令只能以命令行参数的形式接受数据,而无法通过stdin接受数据流.这时候就没法使用管道.那么xar ...

  9. Centos7 安装vim8

    一.卸载旧版本的vim yum -y remove vim* 二.安装终端字符处理库ncurses yum -y install ncurses-devel 三.下载Vim8 wget https:/ ...

  10. Linux Ubuntu下Jupyter Notebook的安装

    Jupyter Notebook, 以前又称为IPython notebook,是一个交互式笔记本, 支持运行40+种编程语言. 可以用来编写漂亮的交互式文档. 安装步骤: pip install - ...