zoukankan      html  css  js  c++  java
  • iOS-贝塞尔连续曲线

    一个曲线

    UIColor *color = [UIColor redColor];
        [color set];
        UIBezierPath *path = [UIBezierPath bezierPath];
        ///线的宽度【粗细】
        path.lineWidth = 5;
        ///端点类型
        path.lineCapStyle = kCGLineCapRound;
        ///衔接类型
        path.lineJoinStyle = kCGLineJoinRound;
        ///起点
        [path moveToPoint:CGPointMake(0, 100)];
        [path addCurveToPoint:CGPointMake(200, 100) controlPoint1:CGPointMake(50, 0) controlPoint2:CGPointMake(150, 200)];
        [path stroke];

     图例:

    多个曲线

    /**
     贝塞尔曲线
     CGRect
    */  
    - (void)draweBezierCurves:(CGRect)rect{
        ///曲线水平位置y坐标
        CGFloat lintY = rect.origin.y;
        ///每个曲线的水平长度【两个弧度为一个曲线】
        NSInteger lineWidth = 8;
        ///每个曲线的上下顶点与水平位置 距离
        CGFloat lingPeak = 3;
        ///波浪线个数
        NSInteger lineCount = (int)(rect.size.width / lineWidth);
        ///除了整数外,最后一条线的长度【小于 lineWidth】
        CGFloat lastLineWidth = rect.size.width - lineCount*lineWidth;
        ///贝塞尔
        UIBezierPath *path = [UIBezierPath bezierPath];
        ///线的宽度【粗细】
        path.lineWidth = 1;
        ///端点类型
        path.lineCapStyle = kCGLineCapRound;
        ///衔接类型
        path.lineJoinStyle = kCGLineJoinRound;
        ///颜色
        UIColor *color = [UIColor redColor];
        
        [color set];
        for (int i = 0; i < lineCount; i ++) {
            ///起点
            [path moveToPoint:CGPointMake(rect.origin.x + i*lineWidth, lintY)];
            ///三点成线
            [path addCurveToPoint:CGPointMake(rect.origin.x + i*lineWidth + lineWidth, lintY) controlPoint1:CGPointMake(rect.origin.x + i*lineWidth + lineWidth/4, lintY - lingPeak) controlPoint2:CGPointMake(rect.origin.x + i*lineWidth + (lineWidth/4)*3, lintY + lingPeak)];
        }
        
        if (lastLineWidth > 0) {
            ///起点
            [path moveToPoint:CGPointMake(rect.origin.x + lineCount*lineWidth, lintY)];
            ///三点成线
            [path addCurveToPoint:CGPointMake(rect.origin.x + lineCount*lineWidth + lastLineWidth, lintY) controlPoint1:CGPointMake(rect.origin.x + lineCount*lineWidth + lastLineWidth/4, lintY - lingPeak) controlPoint2:CGPointMake(rect.origin.x + lineCount*lineWidth + (lastLineWidth/4)*3, lintY + lingPeak)];
            
        }
        [path stroke];
    }

     图例:

  • 相关阅读:
    原生JS之温故而知新(一)
    jQuery版本问题
    AngularJs我的学习整理(不定时修改)
    Js事件处理程序跨浏览器
    AngularJs的关于路由问题
    很棒的十句话,分享给大家。
    一个人为什么要努力?
    春熙路。
    成都
    springboot 使用mybatis-generator自动生成代码
  • 原文地址:https://www.cnblogs.com/wangkejia/p/8885604.html
Copyright © 2011-2022 走看看