Загрузка элемента panel при нажатии на клавишу - C#
Формулировка задачи:
Дана вот такая задачка:
Написать Windows-приложение, которое строит графики четырех заданных функций.
Меню с командами Chart, Clear.
Команда Chart открывает диалоговое окно, содержащее:
-список для выбора цвета типа listbox
-список для выбора типа графика типа listbox
-кнопку button
Обеспечить возможность выбора цвта и графика, После щелчка по кнопке ОК в главном окне приложения строится график выбранной функции на интервале от -PI/2 до PI/2. Окно должно содержать заголовок графика, наименование и градацию осей. Изображение должно занимать все окно и масштабироваться при изменении размеров окна.
Команда Clear очищает окно.
Создал диалоговое окно, поместил компоненты, и присвоил переменным значения выделенных объектов(цвет и тип графика)
В главном окне создал элемент panel, и описал для него вывод графиков.
Но у меня при загрузке формы строится графики заданные по умолчанию. Как можно сделать чтобы главное окно загружалось пустым, и только после нажатия ОК прорисовывался график?
public string color = ""; //цвет public string type = ""; //итем color += listBox1.SelectedItem; //получение цвета type += listBox2.SelectedItem; //получение итема
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();
}