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

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

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

-(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];
}

目录
相关文章
|
算法 前端开发
圆和矩形是否有重叠
圆和矩形是否有重叠
119 0
|
算法 测试技术 C++
C++算法:柱状图中最大的矩形
C++算法:柱状图中最大的矩形
|
9月前
|
Python
绘制直线
【5月更文挑战第11天】绘制直线。
43 1
|
9月前
|
算法 测试技术 C#
【单调栈】【网格】【柱图面积】85. 最大矩形
【单调栈】【网格】【柱图面积】85. 最大矩形
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
307 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
|
JavaScript
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
echarts\pyecharts 实现:两条折线,重叠部分为实线,未重叠部分为虚线
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
336 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
559 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(三)
在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。
编写Java程序:在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。

热门文章

最新文章