ZedGraph Form Problem?



  • Sehr geehrtes Forum,

    Wenn ich ZedGraph einbinde und mit einem BSP Code über die Form Load Methode starte, so funktioniert alles Prima.

    public void CreateChart(string schuelerid)
            {
              ... vars ... .... ... unwichtig ...
                double xa = 0;
    
                GraphPane myPane = zedGraphControl1.GraphPane;
    
                // Set up the title and axis labels
                myPane.Title.Text = "Fehlstunden Statistik";
                myPane.XAxis.Title.Text = "X : Zeitpunkt der Fehlstunden";
                myPane.YAxis.Title.Text = "Y : Anzahl der Fehlstunden";
    
                // Make up some data arrays based on the Sine function
                PointPairList list1 = new PointPairList();
    
                for (int i = 0; i < y.Length-1; i++)
                {
                    xa = convert_str_date(x[i]);
    
                    list1.Add(xa, Convert.ToInt32(y[i]));
                }
    
                // Generate a red curve with diamond
                // symbols, and "Porsche" in the legend
                LineItem myCurve = myPane.AddCurve("Fehlstundenabgrenzung",
                   list1, Color.Red, SymbolType.Diamond);
    
                // Change the color of the title
                myPane.Title.FontSpec.FontColor = Color.Blue;
                myPane.XAxis.Type = AxisType.Date;
    
                // Add gridlines to the plot, and make them gray
                myPane.XAxis.MajorGrid.IsVisible = true;
                myPane.YAxis.MajorGrid.IsVisible = true;
                myPane.XAxis.MajorGrid.Color = Color.LightGray;
                myPane.YAxis.MajorGrid.Color = Color.LightGray;
    
                // Move the legend location
                myPane.Legend.Position = ZedGraph.LegendPos.Bottom;
    
                // Make both curves thicker
                myCurve.Line.Width = 2.0F;
    
                // Fill the area under the curves
                myCurve.Line.Fill = new Fill(Color.White, Color.Red, 45F);
    
                // Increase the symbol sizes, and fill them with solid white
                myCurve.Symbol.Size = 8.0F;
                myCurve.Symbol.Fill = new Fill(Color.White);
    
                // Add a background gradient fill to the axis frame
                myPane.Chart.Fill = new Fill(Color.White,
                   Color.FromArgb(255, 255, 210), -45F);
    
                // Calculate the Axis Scale Ranges
                zedGraphControl1.AxisChange();
            }
    

    Und über die FormLoad wirds einfach so aufgerufen:

    private void fehlstunden_Load(object sender, EventArgs e)
            {
    CreateChart("7");
    }
    

    WEnn ich nun aber einen Button einbaue, der genau so etwas wie.

    CreateChart("7");
    

    machen soll, so wird das Diagramm schlicht und einfach nicht gezeichnet. Es scheint so als ob dies nur über Form_Load() funktionieren würde???
    Oder das Bild nicht aktualisiert wird?

    Vielen Dank für eure Hilfen!



  • Hab das Problem jetzt gelöst.
    Der ZedGraph hat eine .Update() bzw. .Refresh() Methode, die das ganze aktualisiert. Nun komme ich aber in ein neues Problem.

    Ich habe eine ComboBox, die mir gewisse Personen anzeigt. Die Personen kann ich auswählen und es wird ein Diagramm von einer Statistik Ihrer Arbeitsstunden gezeichnet.

    Wie gesagt dank .update / .refresh funktioniert das nun super. Jedoch gibt es ein Problem:

    Ich wähle Person X aus und das Diagramm wird korrekt gezeichnet.
    Ich wähle Person Y aus und das Diagramm wird mit einem "Blödsinn" überschrieben. Falsche Werte etc. Mir kommt es vor als ob das Diagramm von Person X nicht gelöscht wird sondern mit Person Y irgendwie "zusammgefügt" wird.

    Hat wer eine Idee dazu?



  • Hi, ich hab dein Code mal fix überflogen ...(Ich muss dazu sagen ich hab noch nicht mit so einem teil gearbeitet)

    Wenn ich das richtig sehe holst du dir die "GraphPane" von deinem vorhandenen Control (zedGraphControl1) und addest dann die neuen werte.

    Was ist mit den alten Werten, müsstest du die vorher nicht erst löschen?
    ich sehe nur ein "Add".

    Gruß,
    Sascha



  • Also du meinst die list1 Werte irgendwie alle löschen?
    Wäre ne Idee.

    Mal sehen ob das irgendwie machbar ist.
    Danke für den Tipp



  • Die ZedGraph lib is ne tolle sache, verwende es auch...
    leider gibt es nur "Add" methoden. Das GraphPane hat eine

    private CurveList _curveList;
    

    member, welche all deine Curven hält.

    1. Entweder du erzeugst dein Graphpane jedes mal neu, und addest deine Kurven, oder

    2. Du re-design-st bzw. erweiterst die GraphPane klasse so, das man auch curven aus dem feld löschen kann.


Log in to reply