2010-04-22 7 views
1

Je dessine un cercle en C# et je l'ai divisé en quelques parties, je veux remplir différentes parties avec des couleurs différentes, est-il de toute façon à faire cela? et comment? J'ai essayé d'utiliser fillpie() mais je ne pouvais pas obtenir les arguments pour fonctionner.Remplir une zone dans Visual Studio C#

Voici le code:

  int r = 150; 
      g.DrawEllipse(Pens.Black, 300 - r, 250 - r, 2 * r, 2 * r); 

      if (p != 0) 
       g.DrawLine(Pens.Black, 300, 250, 300 + r, 250); 
      double sum; 
      sum = 0.0; 
      for (int j = 0; j < p; j++) 
       sum += data[j].value; 
      double angle; 
      angle = 0.0; 
      for (int i = 0; i < p; i++) 
      { 
       angle += (double)(data[i].value/sum) * 2.0 * Math.PI; 
       textBox1.Text += sum.ToString() + " : " + angle.ToString() + ":" + Math.Cos(angle).ToString() + "\r\n"; 
       g.DrawLine(Pens.Black, 300, 250, 300 + (int)(Math.Cos(angle) * r), 250 - (int)(Math.Sin(angle) * r)); 
      //g.FillPie(Brushes.Black, 300-r , 250 - r, r, r ,(float)(angle),(float)(angle+ (data[i].value /sum) * 2.0 * Math.PI)); 

      } 

ce divise en fait le cercle en différentes parties, je ne sais pas comment les remplir

la ligne est commenté où je

+1

Quels arguments avez-vous essayé? Peut-être que vous aimeriez éditer votre question pour montrer le code que vous avez? – anonymous

+2

Winforms ou WPF? S'il vous plaît montrer du code. –

Répondre

2

vous Supposant utilisent WinForms, le MSDN a un exemple simple et agréable pour la méthode FillPie().

public void FillPieRectangle(PaintEventArgs e) 
{ 

    // Create solid brush. 
    SolidBrush redBrush = new SolidBrush(Color.Red); 

    // Create rectangle for ellipse. 
    Rectangle rect = new Rectangle(0, 0, 200, 100); 

    // Create start and sweep angles. 
    float startAngle = 0.0F; 
    float sweepAngle = 45.0F; 

    // Fill pie to screen. 
    e.Graphics.FillPie(redBrush, rect, startAngle, sweepAngle); 
} 

EDIT:

On dirait que vous voulez vraiment tirer une sorte de graphique circulaire, mais votre code semble moyen de compliqué. Jetez un oeil à this article qui pourrait vous donner de l'aide.

+0

merci, je sais comment travailler avec elle maintenant, cela peut être fermé. – lajoo

0
e.Graphics.FillPie(new SolidBrush(Color.Red,0, 0,45,45,0,30)