2015-02-14 2 views
0

У меня есть форма, где я иллюстрирую круговую диаграмму для процента трех типов команд сборки (R, I, J). Для этого я использую графическую библиотеку. Мое приложение до сих пор показывает график и процентную команду foreach после нажатия кнопки. Мне нужно это сделать, не нажимая на кнопку. Я попробовал несколько альтернатив, но ничего не получилось. Отображаются только проценты, и круговая диаграмма не отображается, пока я не нажму кнопку. Ниже приведена часть моего исходного кода, который работает с button_click, но также и изображения моей формы. любая помощь pls ??Использовать Grapgics без нажатия кнопки

public float d1; 
    public float d2; 
    public float d3; 

private void button1_Click(object sender, EventArgs e) 
    { 
     SolidBrush b1 = new SolidBrush(Color.Blue); 
     SolidBrush b2 = new SolidBrush(Color.Red); 
     SolidBrush b3 = new SolidBrush(Color.LawnGreen); 
     Rectangle rect = new Rectangle(60, 10, 200, 200); 
     Pen p = new Pen(Color.Black); 

     graphics.DrawPie(p, rect, 0, d1); 
     graphics.FillPie(b1, rect, 0, d1); 
     graphics.DrawPie(p, rect, d1, d2); 
     graphics.FillPie(b2, rect, d1, d2); 
     graphics.DrawPie(p, rect, d1 + d2, d3); 
     graphics.FillPie(b3, rect, d1 + d2, d3); 
     comboBox1.SelectedIndex = 0; 

     label1.Text = "R_type (" + (d1 * 100/360).ToString() + "%)"; 
     label2.Text = "I_type (" + (d2 * 100/360).ToString() + "%)"; 
     label3.Text = "J_type (" + (d3 * 100/360).ToString() + "%)"; 
    } 

enter image description here

Когда я попытался скопировать код, включенный в метод button1_Click() для нового пустого метода, только панель с процентами была показана, но диаграмма не. Благодаря!

ответ

0

Ниже приведен фрагмент кода, где я получить графический объект в собственном коде:

дело в том, что вам необходимо для создания графического объекта, если вы хотите нарисовать в обработчике нажатия кнопки.

0

Я почти уверен, что вы не знаете о своей реальной проблеме.

Проблема не в том, что она работает только внутри обработчика событий кнопки. Это географический (внутри обработчика) дифференциатор, который неважен.

Проблема заключается в том, когда вы выполняете эти операции рисования.

Я предполагаю, что «вне обработчика событий кнопки» означает внутри места (возможно, конструктор формы), который вызывается до того, как его можно даже визуализировать.

Легкий способ-аут ответа (который не включает в себя какие-либо идеи)

  • Просто добавьте компонент Timer в форму
  • создать обработчик события для его Tick события
  • установить его Enabled property to true
  • присвоено имущество Interval .. сказать 200 (подразумевается миллисекунды)
  • написать код для рисования внутри обработчика событий, созданный на шаге 2
  • программно отключить таймер внутри обработчика событий (либо в верхней или в нижней части обработчика событий)

Здоровое решение

  • О создании пользовательских элементов управления (а не элементов управления пользователя).
  • Создайте CustomControl и назовите его MyPieRenderer