zoukankan      html  css  js  c++  java
  • ios 绘制虚线 CGContextSetLineDash的使用

    画虚线需要用到函数:

    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);  

    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);   

    如图显示:

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

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

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

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

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/6022806.html
Copyright © 2011-2022 走看看