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

-[UIColor setFill]100%確信はありませんが、ベジェパスの塗りつぶしの色を設定するために使用する必要があると思います。

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

おそらく、チャートセグメントごとに新しいベジェパスを開始する必要があります。

于 2012-10-08T17:14:35.487 に答える
0

OK、私のコードは正しく機能しています。描画方法にエラーがあり、円弧ではなく円を作成します。ごめんなさい。

問題はこの方法にありました:

-(float)degreesToRadians:(float)degrees{戻り度*M_PI / 180; }

M_1_PI代わりに使用M_PIし、円弧は円でした。

于 2012-10-08T17:22:54.770 に答える