2012-04-30 15 views
2

次のコードを使用してPieChartを作成しました。ここでは、xyの合計を100%とし、を緑色のpieChartに表示しました。私は正確x%(実施例45%(又は)55%)を表示する赤色の色にPieChartにテキストを表示するには?

iが厳密y%(実施例55%(又は)45%)を表示する緑色に。

XYの値は変数です。これらの値は、私がアプリケーションを実行するたびに変わります。私はそれらの地域のパーセンテージで緑色と赤色のpieChartを表示したいと思います。どのようにフレームを作成してその地域にパーセンテージを表示できますか?あなたはのdrawRectメソッド中にNSStringのdrawInRectで文字列を描画することができ

.mファイル

- (void)drawRect:(CGRect)rect 
{ 
// Drawing code 

int x = 25; 
int y = 42; 

float sum = x + y; 
float mult = (360/sum); 

float startDeg = 0; 
float endDeg = 0; 

int x = 74; 
int y = 60; 
int r = 60; 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextSetRGBStrokeColor(ctx, 1.0, 1.0, 1.0, 1.0); 
CGContextSetLineWidth(ctx, 2.0); 

startDeg = 0; 
endDeg = (x * mult); 
if(startDeg != endDeg) 
{ 
CGContextSetRGBFillColor(ctx, 0.0, 0.8, 0.0, 1.0); 
CGContextMoveToPoint(ctx, x, y); 
CGContextAddArc(ctx, x, y, r, (startDeg)*M_PI/180.0, (endDeg)*M_PI/180.0, 0); 
CGContextClosePath(ctx); 
CGContextFillPath(ctx); 
} 

startDeg = endDeg; 
endDeg = endDeg + (y * mult); 
if(startDeg != endDeg) 
{ 
CGContextSetRGBFillColor(ctx, 0.8, 0.0, 0.0, 1.0); 
CGContextMoveToPoint(ctx, x, y); 
CGContextAddArc(ctx, x, y, r, (startDeg)*M_PI/180.0, (endDeg)*M_PI/180.0, 0); 
CGContextClosePath(ctx); 
CGContextFillPath(ctx); 
} 
} 

答えて

4

。たとえば、次のように更新

[percentageString drawInRect:CGRectMake(100, 100, 30, 20) 
        withFont:font 
       lineBreakMode:UILineBreakModeClip 
        alignment:UITextAlignmentLeft]; 

ここ

は、xを見つける方法で、yは、テキスト配置のために:

CGFloat startDegree = 180;        // start at 180 
CGFloat endDegree = degree;       // end at some value 

CGFloat mid = (endDegree + startDegree)/2;   // find midpoint 
CGFloat rad = DEGREES_TO_RADIANS(mid);     // convert to radians 


// center is center of pie chart 
// radius is how big the pie chart is 
// 30 is extra to draw text outside circle 

CGFloat x = center.x + ((radius + 30) * cos(rad));  
CGFloat y = center.y + ((radius + 30) * sin(rad)); 

NSLog(@"X Y: %f %f %f", x, y, degree); 

NSString *text = @"Test"; 
[text drawInRect:CGRectMake(x, y, 50, 44) withFont:[UIFont systemFontOfSize:14.0f]]; 

を私はので、私はそれを使用したサンプル円グラフを持っていました。それは度を持つスライダを持っています。この例では、円グラフのセグメントを180度から360度まで描画できます。

+0

私のpiechartの主な問題は、座標を知ることができないことです。緑色と赤色の領域は、x%とy%に依存して変化します。x%が60の場合.. 60 x%が20の場合のX領域の%。20%の領域で20%を表示したい。%の値を持つ四角形の座標が変化している。上記の答えでは、固定座標(100,100)を与える...それは私の主な問題です...あなたはテキストを持つpieChartを描画する別のソースコードがある場合。私に教えてください....ありがとう.. – SriKanth

+0

@SriKanthテキストを配置するためのx座標とy座標を見つける方法を示すために私の答えを更新しました。 – bbarnhart

+0

ありがとうありがとうございました...私は今それが来ることを願っています..私はそれを試しています...しかし、DEGREES_TO_RADIANSメソッドは、 "関数の暗黙の宣言はc99で無効です" .. ..私はiOS5でこれをやっています。 ..その方法がなければ私は度をラジアンに変換しています...それはいいです..それを変換するためのiOS5のメソッドはありますか? – SriKanth

関連する問題