用贝舍尔曲线绘制分段闭合圆环

简介: 用贝舍尔曲线绘制分段闭合圆环

用贝舍尔曲线绘制分段闭合圆环

-(void)createCircleWithCount:(CGFloat)count num:(CGFloat)num
{
    if(count <= 0 || num < 0 || num > count)
    {
        return;
    }
    else if(num == count || 0 == num)
    {
        CAShapeLayer *layer = [CAShapeLayer new];
        layer.lineWidth = 7.5;
        //圆环的颜色
        if(0 == num)
        {
            layer.strokeColor = [UIColor whiteColor].CGColor;
        }
        else
        {
            layer.strokeColor = BGColorHex(FFC67B).CGColor;
        }
        
        //背景填充色
        layer.fillColor = [UIColor clearColor].CGColor;
        //设置半径为10
        CGFloat radius = 49;
        //按照顺时针方向
        BOOL clockWise = NO;
        //初始化一个路径
        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(FULL_WIDTH - COMMON_EDGE_DISTANCE -49,  (FULL_WIDTH*222.5/375*3/4-98 -28.5)/2 +49) radius:radius startAngle:0 endAngle:2*M_PI clockwise:clockWise];
        layer.path = [path CGPath];
        [self.evaluatingReportBackgroundHeadView.layer addSublayer:layer];
        return;
    }
    CGFloat endAngle = num/count;
    if(endAngle <= 0.5)
    {
        endAngle = M_PI - endAngle *M_PI*2;
    }
    else
    {
        endAngle = M_PI + (1 - endAngle) *2*M_PI;
    }
    CAShapeLayer *layer = [CAShapeLayer new];
    layer.lineWidth = 7.5;
    //圆环的颜色
    layer.strokeColor = BGColorHex(FFC67B).CGColor;
    //背景填充色
    layer.fillColor = [UIColor clearColor].CGColor;
    //设置半径为10
    CGFloat radius = 49;
    //按照顺时针方向
    BOOL clockWise = NO;
    //初始化一个路径
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(FULL_WIDTH - COMMON_EDGE_DISTANCE -49,  (FULL_WIDTH*222.5/375*3/4-98 -28.5)/2 +49) radius:radius startAngle:(1*M_PI) endAngle:endAngle clockwise:clockWise];
    layer.path = [path CGPath];
    [self.evaluatingReportBackgroundHeadView.layer addSublayer:layer];
    
    layer = [CAShapeLayer new];
    layer.lineWidth = 7.5;
    //圆环的颜色
    layer.strokeColor = [UIColor whiteColor].CGColor;
    //背景填充色
    layer.fillColor = [UIColor clearColor].CGColor;
    //设置半径为10
    radius = 49;
    //按照顺时针方向
    clockWise = YES;
    //初始化一个路径
    path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(FULL_WIDTH - COMMON_EDGE_DISTANCE -49,  (FULL_WIDTH*222.5/375*3/4-98 -28.5)/2 +49) radius:radius startAngle:(1*M_PI) endAngle:endAngle clockwise:clockWise];
    layer.path = [path CGPath];
    [self.evaluatingReportBackgroundHeadView.layer addSublayer:layer];
}

目录
相关文章
|
算法 前端开发
圆和矩形是否有重叠
圆和矩形是否有重叠
83 0
|
4月前
|
前端开发
Canvas绘画之三条二次方贝塞尔曲线构成的复选框标记对号
Canvas绘画之三条二次方贝塞尔曲线构成的复选框标记对号
|
6月前
|
Python
绘制直线
【5月更文挑战第11天】绘制直线。
33 1
|
11月前
|
算法 数据可视化 C#
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。
235 0
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
277 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
|
JavaScript
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
312 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
524 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
|
算法 计算机视觉 Python
霍夫变换绘制出图案里的直线
霍夫变换绘制出图案里的直线