gpt4 book ai didi

ios - 如何为 Arc 做角

转载 作者:技术小花猫 更新时间:2023-10-29 10:36:48 26 4
gpt4 key购买 nike

我做了如下的弧线。通过指定半径、起始角、结束角

    CGContextAddArc(ctx, self.frame.size.width/2  , self.frame.size.height/2,
self.radius, 2*M_PI, 3*M_PI/2-ToRad(angle), 0);

现在我想让拱形的角变圆。所以需要在两端画圆圈。因为我使用的是框架尺寸,所以给常量是行不通的。

enter image description here

最佳答案

尝试将图形状态参数 CGContextSetLineJoin 设置为圆形:CGContextSetLineCap(ctx, kCGLineCapRound);

这是我根据您的问题进行的研究。该方法位于 drawRect: 方法中,我写了一个简短的方法来抽象它,以便只给该方法参数 startAngle、endAngle 和 radius。当然不能细化。

我为您提供了此方法输出的图片。

- (void)drawRect:(CGRect)rect {
float startAngle = 0;
float endAngle = 60;
float radius = 50.0;

CGContextRef ctx = [self drawRoundedArcWithStartAngle:startAngle endAngle:endAngle radius:radius];
CGContextStrokePath(ctx);
}

- (CGContextRef)drawRoundedArcWithStartAngle:(float)startAngle endAngle:(float)endAngle radius:(float)radius {

CGContextRef ctx = UIGraphicsGetCurrentContext();
// [CGContextAddArc(ctx, self.frame.size.width/2 , self.frame.size.height/2, radius, 2*M_PI, 3*M_PI/2-(angle * M_PI / 180), 0)];

CGContextAddArc(ctx, self.frame.size.width/ 2, self.frame.size.height/2, radius, (startAngle * M_PI / 180), (endAngle * M_PI / 180), 0);
CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(ctx, 20.0f);
CGContextSetLineCap(ctx, kCGLineCapRound);
return ctx;
}

希望对您有所帮助!

Arc with rounding. Output from the method above.

关于ios - 如何为 Arc 做角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41375097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com