Загрузка элемента panel при нажатии на клавишу - C#

Узнай цену своей работы

Формулировка задачи:

Дана вот такая задачка: Написать Windows-приложение, которое строит графики четырех заданных функций. Меню с командами Chart, Clear. Команда Chart открывает диалоговое окно, содержащее: -список для выбора цвета типа listbox -список для выбора типа графика типа listbox -кнопку button Обеспечить возможность выбора цвта и графика, После щелчка по кнопке ОК в главном окне приложения строится график выбранной функции на интервале от -PI/2 до PI/2. Окно должно содержать заголовок графика, наименование и градацию осей. Изображение должно занимать все окно и масштабироваться при изменении размеров окна. Команда Clear очищает окно. Создал диалоговое окно, поместил компоненты, и присвоил переменным значения выделенных объектов(цвет и тип графика)
public string color = ""; //цвет
public string type = ""; //итем
color += listBox1.SelectedItem; //получение цвета
type += listBox2.SelectedItem; //получение итема
В главном окне создал элемент panel, и описал для него вывод графиков.
private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Form3 c = new Form3();
            float W = panel1.Width, H = panel1.Height;
            float halfW = W / 2, halfH = H / 2;
 
            // оси координат
            e.Graphics.DrawLine(Pens.Black, halfW, 0, halfW, H);
            e.Graphics.DrawLine(Pens.Black, 0, halfH, W, halfH);
 
            // координаты предыдущей точки
            int ixPrev = -1;
            int iyPrev = (int)halfH;
 
            // синус на интервале x=[-PI/2..PI/2]
            // проходим по всем точкам на форме, вычисляем x и y=sin(x)
            for (int ix = 0; ix < W; ix++)
            {
                // переводим x в диапазон -1..1
                float x = (ix - halfW) / halfW;
 
                // переводим x в -pi/2..pi/2
                x *= (float)(Math.PI/2);
 
                // получаем sin(x)
                float y;
                if (c.type == "sin(x)")
                {
                    y = (float)Math.Sin(x);
                }
 
                else if (c.type == "sin(x+PI/4)")
                {
                    y = (float)Math.Sin(x + (Math.PI/4));
                }
 
                else if (c.type == "cos(x)")
                {
                    y = (float)Math.Cos(x);
                }
 
                else //default cos(x-PI/4)
                {
                    y = (float)Math.Cos(x - (Math.PI / 4));
                }
 
                // переводим y из -1..1 в пикселы на форме
                int iy = (int)(halfH - y * halfH);
 
                //рисование графика
                if (c.color == "Black")
                {
                    e.Graphics.DrawLine(Pens.Black, ixPrev, iyPrev, ix, iy);
                }
                else if (c.color == "Red")
                {
                    e.Graphics.DrawLine(Pens.Red, ixPrev, iyPrev, ix, iy);
                }
                else if (c.color == "Yellow")
                {
                    e.Graphics.DrawLine(Pens.Yellow, ixPrev, iyPrev, ix, iy);
                }
                else //default Green
                {
                    e.Graphics.DrawLine(Pens.Green, ixPrev, iyPrev, ix, iy);
                }
 
                ixPrev = ix;
                iyPrev = iy;
            }
        }
Но у меня при загрузке формы строится графики заданные по умолчанию. Как можно сделать чтобы главное окно загружалось пустым, и только после нажатия ОК прорисовывался график?

Решение задачи: «Загрузка элемента panel при нажатии на клавишу»

textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
     Bitmap bmp = new Bitmap(500, 500);
     pictureBox1.Image = bmp;
 
     timer1.Start();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы