2010-04-22 60 views
1

我在C#中繪製了一個圓圈,並且將它分成了一些部分,我想用不同的顏色填充不同的部分,反正有這樣做嗎?以及如何?我嘗試使用fillpie(),但我無法得到參數工作。在視覺工作室C中填充區域#

這裏是代碼:

  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)); 

      } 

這實際上劃分圈成不同的部分,我不知道如何來填補他們

的註釋行是我

+1

你試過什麼論點?也許你想編輯你的問題來顯示你的代碼? – anonymous 2010-04-22 08:09:35

+2

Winforms或WPF?請顯示一些代碼。 – 2010-04-22 08:10:11

回答

2

假如你正在使用WinForms,MSDN爲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); 
} 

編輯:

看起來你真的想得出某種餅圖的,但你的代碼看起來方式複雜。看看this article這可能會給你一些幫助。

+0

謝謝,我知道如何使用它,現在可以關閉。 – lajoo 2010-04-22 08:30:29

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