0

他我正在制作简单的饼图,我在绘制它时遇到了问题。我想改变每张饼图的颜色,但是当方法 drawRect: 被调用时,我的饼图是单色的。如何正确制作?

for (int i = 0; i < [values count]; i++) {
    CGContextSetRGBFillColor(ctx, 0.2*i, 0.2*i, 0.2*i, 1);

    [bezierPath moveToPoint:chartCenter];

    startAngle = endAngle;

    endAngle = startAngle + [self degreesToRadians:[values[i] floatValue]*step];
    NSLog(@"%.2f, %.2f", startAngle, endAngle);

    [bezierPath addArcWithCenter:chartCenter radius:radius startAngle:startAngle endAngle:endAngle clockwise:1];
    [bezierPath addLineToPoint:chartCenter];

    [bezierPath fill];
}
4

2 回答 2

1

我不是 100% 确定,但我认为你必须使用-[UIColor setFill]来设置贝塞尔路径的填充颜色,例如

UIColor *color = [UIColor colorWithWhite:0.2*i alpha:1.0];
[UIColor setFill];

您可能还应该为每个图表段开始一个新的贝塞尔路径。

于 2012-10-08T17:14:35.487 回答
0

好的,我的代码工作正常。我的绘图方法有一些错误,我创建的是圆而不是弧。非常遗憾。

问题出在这种方法中:

-(float)degreesToRadians:(float)degrees{ 返回度数 * M_PI / 180; }

我使用M_1_PI而不是,M_PI我的弧是圆圈。

于 2012-10-08T17:22:54.770 回答