Заполнение области в визуальной студии C # - PullRequest
1 голос
/ 22 апреля 2010

Я рисую круг в C #, и я разделил его на несколько частей, я хочу заполнить разные части разными цветами, есть ли еще способ сделать это?и как? я пытался использовать fillpie (), но я не мог заставить аргументы работать.

вот код:

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

            }

это фактически делит круг на разные части, яне знаю, как их заполнить

закомментированная строка, где я

Ответы [ 2 ]

2 голосов
/ 22 апреля 2010

Предположим, что вы используете 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);
}

EDIT:

Похоже, вы действительно хотите нарисовать некую круговую диаграмму, но ваш код выглядит слишком сложным. Взгляните на эту статью , которая может вам помочь.

0 голосов
/ 20 ноября 2012
e.Graphics.FillPie(new SolidBrush(Color.Red,0, 0,45,45,0,30)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...