Laden...

ZedGraph Grafik löschen

Erstellt von msimmerl vor 15 Jahren Letzter Beitrag vor 15 Jahren 7.381 Views
M
msimmerl Themenstarter:in
127 Beiträge seit 2006
vor 15 Jahren
ZedGraph Grafik löschen

Hi Leute,

hoffentlich ist hier jemand da der sich mit Zedgraph auskennt.

Hab folgendes Problem:

Ich lasse einen Graphen zeichnen. funktioniert.
Nachdem ich auf einen Button gedrückt habe soll ein weiterer Graph gezeichnet werden, aber erst nachdem der vorherige Graph gelöscht wurde. funktioniert leider nur so weit das dann beide zu sehen sind. Was ich eigentlich nicht will.

Wie ist es möglich diesen zu löschen???
Komm da nicht weiter....

Solltet ihr den Quellcode brauchen sagt bescheid.

Gruß
msimmerl

M
194 Beiträge seit 2008
vor 15 Jahren

Also der einfachste Weg wäre sicherlich, die gesamte CurveList zu löschen, bevor du eine neue Kurve einfügst.

zedGraph.GraphPane.CurveList.Clear();
zedGraph.Refresh();

Du kannst auch nur die erste Kurve unsichtbar machen:

zedGraph.GraphPane.CurveList[0].IsVisible=false;

Oder du löscht ganz gezielt deine alte Kurve mit remove:

zedGraph.GraphPane.CurveList.Remove(zedGraph.GraphPane.CurveList[iCurveNr]);

Grüße

"Indem Sie über dieses ernste Thema lachen disqualifizieren Sie sich selbst."
mrleeh.de

415 Beiträge seit 2006
vor 15 Jahren

Ich steh auch grad vor dem ähnlichen Problem.

Ich hab mein ZedGraph-Control, das ich als erstes als Bar-Graph zeichne. Als nächstes zeichne ich dann im selben ZedGraph-Contorl z.b. einen Pie-Graph.
Soweit funktioniert alles einwandfrei...

Wenn ich nun wieder den Bar-Graph zeichnen will, werden nur die Balken gezeichnet, jedoch kein Koordinatensystem und es wird auch der Text nicht neu geschrieben.

Bevor ich meinen Graphen zeichne, lösche ich eben auch noch die CurveList.

Muss ich, damit ich zwischen den beiden Graphen in einem ZedGraph-Control umschalten kann, noch den alten Graphen anders löschen? Wie?

MfG Tobi

S
260 Beiträge seit 2007
vor 15 Jahren

Folgende Zeile sollte dein Problem lösen.


ZedGraph.Invalidate();

Gruß
Michael

29 Beiträge seit 2009
vor 15 Jahren

Hey Leute!

Habe auch ein ähnliches Problem.

Ich möchte in einem Control auf Buttonklick zwischen einer Kurve und einem Bar-Graph hin und her schalten. Das funktioniert auch wunderbar!
Das Problem ist das die Formatierung der Achsen bestehen bleibt, sofern sie nicht überschrieben wird.
Beispiel: Die Kurve hat eine y-Achse, der Bargraph hat zwei. Wenn ich nun vom Bargraphen zurück auf die Kurve "springe" bleiben zwei y-Achsen im Graphen.

Laut der ZG-Klassendoku funktioniert die AxisChange-Methode nur für automatisch formatierte Achsen und Invalidate() hilft da auch nicht weiter.

Gibt es nicht eine Methode die den ganzen Graphen samt Achsen auf "default" zurücksetzt?
Ich bin nach langem Suchen in der Doku nicht fündig geworden.
Meine Lösung aktuell, ist eine Methode die alle manuell formatierten Werte/Skalen für die Achsen auf Auto setzt.
Das kanns aber doch nicht sein, oder? :evil: Kennt jemand einen eleganteren Weg?

Bin für jeden Tip dankbar!

Gruß der Neue!

Gruß DLCoder

M
194 Beiträge seit 2008
vor 15 Jahren

Hallo DLCoder,

der zweite Teil deiner Beschreibung klingt so, als ob du die Autoscale-Anweisung, die im Kontextmenü von ZedGraph enthalten ist per Programmcode aufrufen willst.

Für den Fall gibt es den Befehl:

zedGraph.RestoreScale(zedGraph.GraphPane);

Allerdings mußt du dann immernoch die zusätzliche Y-Achse für den Bar-Graph per Code einfügen.

Beste Grüße
MrLeeh

"Indem Sie über dieses ernste Thema lachen disqualifizieren Sie sich selbst."
mrleeh.de

29 Beiträge seit 2009
vor 15 Jahren

Hallo Mr.Leeh!

Die 2. y-Achse für den Bargraph ist ja eingefügt, mein Problem ist doch das sie nicht verschwindet, wenn ich mir die Kurve wieder anzeigen lassen möchte!

Ebenso habe ich beim Bargraph die y-Achsen mit Farben formatiert. Diese Farben werden beim "zurückschalten" in den Kurvengraphen übernommen, sofern sie da nicht mit einer anderen Farbe formatiert werden.

Ich habe also zwei ZeichneGrafen() Methoden. Eine für die Kurve und eine für die Bars. (Mit unterschiedlichen Namen natürlich...)

Die Lösung bisher: Eine dritte ZeichneGrafen() die alle gesetzten Werte für den GraphPane zurücksetzt!

Mit RestoreScale() ist es leider auch nicht getan.

Gruß der Neue!

Gruß DLCoder

M
194 Beiträge seit 2008
vor 15 Jahren

Da wirst du nicht drumrumkommen, die Eigenschaften neu zu setzen. Die eine Y-Achse kannst du ja über IsVisible = false verstecken.

Eventuell funktioniert folgender Ansatz: Die konfigurierten Achsen in einer Liste speichern und bei Wechsel des Diagrammtyps die Referenz auf die Achsen im Zedgraph neu setzen. Da die Y-Achsen in Listen gespeichert sind sollte das funktionieren.

            List<YAxis> lstYAxis = new List<YAxis>();
            
            lstYAxis.Add (new YAxis("Y1"));
            lstYAxis.Add (new YAxis("Y1Bar"));

            zedGraph.GraphPane.YAxisList.RemoveAt(0);
            zedGraph.GraphPane.YAxisList.Add(lstYAxis[1]);

"Indem Sie über dieses ernste Thema lachen disqualifizieren Sie sich selbst."
mrleeh.de

29 Beiträge seit 2009
vor 15 Jahren

Dank Dir erstmal für die schnelle Hilfe!

ist zwar jetzt OFFTOPIC, aber Ihr seit echt ne Saustarke Community! 👍 👍 👍
Habe hier schon oft (als Gast) sehr schnell Antworten auf meine Fragen gefunden!
Im ZedGraphForum bleibt dahingehend meist alles unbeantwortet!

Werd mich dann später nocheinmal zu Wort melden...

Gruß und code on!

Gruß DLCoder