Раскрашивание графика в ZedGraph с помощью combobox'a - C#

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

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

Возникла проблема: с помощью элемента combobox необходимо изменять цвет графика. Вот код приложения:
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 == "Черный")
            {
                
            }
        }
И здесь же: как при повторном нажатии кнопки "button" при измененных значениях происходило именно перерисовывание графика, а не наложение нового графика на старый.

Решение задачи: «Раскрашивание графика в 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;
            }
        }

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


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

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

5   голосов , оценка 4.2 из 5