简体   繁体   中英

Using ZedGraph in c#

A have a problem. Zedgraph draws the wrong graph for my equation.

My code:

private void button1_Click(object sender, EventArgs e)
{
    double a, b, c, dl;
    a = float.Parse(textBox1.Text);
    b = float.Parse(textBox2.Text);
    c = float.Parse(textBox3.Text);
    dl = (b * b) - (4 * a * c);
    if (dl < 0)
    {
        MessageBox.Show("Error");
    }
    else if (dl > 0)
    {
        x1 = (-b - Math.Sqrt(dl)) / (2 * a);
        x2 = (-b + Math.Sqrt(dl)) / (2 * a);
        textBox4.Text = x1.ToString();
        textBox5.Text = x2.ToString();
    }
    else
    {
        string str = (b / (2 * a)).ToString();
        textBox4.Text = str;
        textBox5.Text = str;
    }
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void button2_Click(object sender, EventArgs e)
{
    // This is to remove all plots
    zedGraphControl1.GraphPane.CurveList.Clear();

    // GraphPane object holds one or more Curve objects (or plots)
    GraphPane myPane = zedGraphControl1.GraphPane;
    PointPairList spl1 = new PointPairList();
    // Add cruves to myPane object
    LineItem myCurve1 = myPane.AddCurve("Equation", spl1, Color.Blue, SymbolType.None);
    myCurve1.Line.Width = 5.0F;
    myPane.Title.Text = "Graph";
    for (int i = -5; i < 8; i++)
    {
        double y = (i - x1) * (i - x2);
        spl1.Add(i, y);
    }

     //I add all three functions just to be sure it refeshes the plot.   
    zedGraphControl1.AxisChange();
    zedGraphControl1.Invalidate();
    zedGraphControl1.Refresh();
}

Try this:

private void button2_Click(object sender, EventArgs e)
{
    // This is to remove all plots
    zedGraphControl1.GraphPane.CurveList.Clear();

    // GraphPane object holds one or more Curve objects (or plots)
    GraphPane myPane = zedGraphControl1.GraphPane;
    PointPairList spl1 = new PointPairList();

    LineItem lineItem = new LineItem("Equation");
    myCurve1.Line.Width = 5.0F;
    myPane.Title.Text = "Graph";
    for (int i = -5; i < 8; i++)
    {
       double y = (i - x1) * (i - x2);
        spl1.Add(i, y);
    }

   // Add cruves to myPane object
    myCurve1 = myPane.AddCurve("Equation", spl1, Color.Blue, SymbolType.None);


     //I add all three functions just to be sure it refeshes the plot.   
    zedGraphControl1.AxisChange();
    zedGraphControl1.Invalidate();
    zedGraphControl1.Refresh();

}

I moved the LineItem myCurve1 = myPane.AddCurve("Equation", spl1, Color.Blue, SymbolType.None); to be done after you build your spl1 list. See if that works for you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM