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