0

所以我试图创建一个圆的一部分,即一个饼片,然后用一个圆去除大部分楔形,留下一个外圆弧。

这就是我目前所拥有的图片 正如你所看到的,它在某个地方搞砸了!

我使用以下代码实现了这一点: -

UIBezierPath* theStroke = [UIBezierPath bezierPathWithRoundedRect:mainCutout cornerRadius:theRadius];
[theOrangeColor setFill];
theStroke.usesEvenOddFillRule = YES;
[theStroke fill];
[theStroke stroke];
[theStroke setMiterLimit:2.0];


UIBezierPath *aSegment = [UIBezierPath bezierPath];
aSegment.usesEvenOddFillRule = YES;

[aSegment moveToPoint:theCenter];
[aSegment addLineToPoint:theCenter];
[aSegment addArcWithCenter:theCenter radius:theRadius startAngle:startAngle endAngle:endAngle clockwise:YES];
[aSegment addLineToPoint:theCenter];
[aSegment appendPath:theStroke];

[theRedColor setFill];
[aSegment fill];
[aSegment stroke];
[aSegment closePath];

谁能帮我?

4

2 回答 2

4

我看不出如何使用奇偶填充规则来删除扇区的那部分。

但是您可以通过绘制两个不同半径的弧段来轻松绘制该段的“外部切片”。例子:

CGPoint theCenter = CGPointMake(100., 100.);
CGFloat innerRadius = 50.;
CGFloat outerRadius = 60.;
CGFloat startAngle = M_PI;
CGFloat endAngle = 3*M_PI/2;

UIBezierPath *aSegment = [UIBezierPath bezierPath];
[aSegment addArcWithCenter:theCenter radius:innerRadius startAngle:startAngle endAngle:endAngle clockwise:YES];
[aSegment addArcWithCenter:theCenter radius:outerRadius startAngle:endAngle endAngle:startAngle clockwise:NO];
[aSegment closePath];
[[UIColor redColor] setFill];
[aSegment fill];

结果:

在此处输入图像描述

于 2012-12-21T17:14:14.757 回答
0

@Martin R的代码中稍作修改,如果您可以指定要在其上绘制弧段的 CALayer 的 lineWidth,则单个“addArcWithCenter:radius:startAngle:endAngle:顺时针:”将为您完成这项工作.

您必须使用笔触而不是填充。(即)只需使用strokeColor

例如:

static inline double radians (double degrees)
{
    return degrees * M_PI/180;
}

CAShapeLayer * shapeLayer = [CAShapeLayer layer];
shapeLayer.lineWidth = 10;
shapeLayer.fillColor = [UIColor clearColor].CGColor;
shapeLayer.strokeColor = [UIColor redColor].CGColor;
CGFloat radius = 50.0;
shapeLayer.path = [[UIBezierPath bezierPathWithArcCenter:centerPoint radius:radius startAngle:radians(startingAngle) endAngle:radians(endingAngle) clockwise:1 ]CGPath ];
[self.layer addSublayer:shapeLayer];

这可能对某人有用...

于 2013-05-22T08:07:47.657 回答