Раскрашивание графика в ZedGraph с помощью combobox'a - C#
Формулировка задачи:
Возникла проблема: с помощью элемента combobox необходимо изменять цвет графика. Вот код приложения:
И здесь же: как при повторном нажатии кнопки "button" при измененных значениях происходило именно перерисовывание графика, а не наложение нового графика на старый.
public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { CreateGraph(zedGraphControl); } private void button_Click(object sender, EventArgs e) { try { a = int.Parse(koefa.Text); b = int.Parse(koefb.Text); c = int.Parse(koefc.Text); x = int.Parse(koefx.Text); z = int.Parse(koefxend.Text); CreateGraph(zedGraphControl); } catch { MessageBox.Show("Неверные значения коэффициентов!"); koefa.Clear(); koefb.Clear(); koefc.Clear(); koefx.Clear(); koefxend.Clear(); koefa.Focus(); } } private void CreateGraph(ZedGraphControl zgc) { GraphPane myPane = zgc.GraphPane; myPane.Title.Text = "График параболы"; myPane.XAxis.Title.Text = "Ось X"; myPane.YAxis.Title.Text = "Ось Y"; double x1, y; PointPairList list1 = new PointPairList(); PointPairList list2 = new PointPairList(); for (int i = x; i <= z; i++) { x1 = i; y = a * Math.Pow(x1, 2) + b * x1 + c; list1.Add(x1, y); list2.Add(-x1, y); } LineItem myCurve = myPane.AddCurve("", list1, Color.Blue, SymbolType.None); // отрисовываем график LineItem my1Curve = myPane.AddCurve("", list2, Color.Blue, SymbolType.None); // отрисовываем график // Задаем вид пунктирной линии для крупных рисок по оси X: myPane.XAxis.MajorGrid.IsVisible = true; // Длина штрихов равна 10 пикселям // затем 5 пикселей - пропуск myPane.XAxis.MajorGrid.DashOn = 10; myPane.XAxis.MajorGrid.DashOff = 5; // Задаем вид пунктирной линии для крупных рисок по оси Y: myPane.YAxis.MajorGrid.IsVisible = true; myPane.YAxis.MajorGrid.DashOn = 10; myPane.YAxis.MajorGrid.DashOff = 5; zgc.AxisChange(); zgc.Refresh(); } private void btnexit_Click(object sender, EventArgs e) { Application.Exit(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if ((string)comboBox1.SelectedItem == "Синий") { } else if ((string)comboBox1.SelectedItem == "Красный") { } else if ((string)comboBox1.SelectedItem == "Зеленый") { } else if ((string)comboBox1.SelectedItem == "Черный") { } }
Решение задачи: «Раскрашивание графика в ZedGraph с помощью combobox'a»
textual
Листинг программы
private Color color; private void CreateGraph(ZedGraphControl zgc) { GraphPane myPane = zgc.GraphPane; myPane.Title.Text = "График параболы"; myPane.XAxis.Title.Text = "Ось X"; myPane.YAxis.Title.Text = "Ось Y"; myPane.CurveList.Clear();// Вот здесь очищаем double x1, y; PointPairList list1 = new PointPairList(); PointPairList list2 = new PointPairList(); for (int i = x; i <= z; i++) { x1 = i; y = a * Math.Pow(x1, 2) + b * x1 + c; list1.Add(x1, y); list2.Add(-x1, y); } LineItem myCurve = myPane.AddCurve("", list1, color, SymbolType.None); // отрисовываем график LineItem my1Curve = myPane.AddCurve("", list2, color, SymbolType.None); // отрисовываем график // Задаем вид пунктирной линии для крупных рисок по оси X: myPane.XAxis.MajorGrid.IsVisible = true; // Длина штрихов равна 10 пикселям // затем 5 пикселей - пропуск myPane.XAxis.MajorGrid.DashOn = 10; myPane.XAxis.MajorGrid.DashOff = 5; // Задаем вид пунктирной линии для крупных рисок по оси Y: myPane.YAxis.MajorGrid.IsVisible = true; myPane.YAxis.MajorGrid.DashOn = 10; myPane.YAxis.MajorGrid.DashOff = 5; zgc.AxisChange(); zgc.Refresh(); } private void btnexit_Click(object sender, EventArgs e) { Application.Exit(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if ((string)comboBox1.SelectedItem == "Синий") { color = Color.Blue; } else if ((string)comboBox1.SelectedItem == "Красный") { color = Color.Red; } else if ((string)comboBox1.SelectedItem == "Зеленый") { color = Color.Green; } else if ((string)comboBox1.SelectedItem == "Черный") { color = Color.Black; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д