ZedGraph API Hilfe

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Croasider.

    ZedGraph API Hilfe

    Hallo

    Ich arbeite gerade mit der API . Jetzt meine Frage: Ich zeiche über diesen Code eine Gerade:

    VB.NET-Quellcode

    1. Dim list = New PointPairList()
    2. If CheckBox1.Checked = True Then
    3. Dim x_22 = 1
    4. Dim y_22 = 1 / 22 * 1000
    5. list.Add(0, 0)
    6. list.Add(x_22, y_22)
    7. Dim myCurve_22 As LineItem = myPane.AddCurve("22 Ω", list, Color.Red, SymbolType.None)
    8. zgc.AxisChange()
    9. zgc.Refresh()
    10. End If


    Ich möchte die Gerade bis ins unendliche Laufen lassen, aber die Achsen Einteilung soll trotzdem beim anlegen/zeichnen des Graphen für x bei 7 und für y bei 50 liegen. Wie bekomme ich sowas hin?
    Und wenn die Checkbox nicht mehr gecheckt ist, soll der Graph wieder gelöscht werden. Auch das bekomme ich nicht vernünftig hin.

    Hoffe auf eure Hilfe. Viele Grüße
    Croasider

    Croasider schrieb:


    Ich möchte die Gerade bis ins unendliche Laufen lassen, aber die Achsen Einteilung soll trotzdem beim anlegen/zeichnen des Graphen für x bei 7 und für y bei 50 liegen. Wie bekomme ich sowas hin?
    Und wenn die Checkbox nicht mehr gecheckt ist, soll der Graph wieder gelöscht werden. Auch das bekomme ich nicht vernünftig hin.

    Hoffe auf eure Hilfe. Viele Grüße
    Croasider


    Die Skalierung erreichst du über myPane.XAxis.Scale.Min bzw myPane.XAxis.Scale.Max für die Y-Achse musst du dann natürlich YAxis verwenden ;)

    Das mit der Checkbox geht auch ganz einfach:
    Im CheckChanged Event der Checkbox den Checked Zustand der Box abfragen und wenn False dann:

    VB.NET-Quellcode

    1. myPane.CurveList.RemoveAt(myPane.CurveList.IndexOf("22 Ω"))


    Nicht vergessen Refresh auf zu rufen
    okay werde das mal ausprobieren :)

    Eine einzige kleine Frage habe ich aber noch: Ich möchte das der Benutzer den Wert der bei normalem Zoom angezeigt wird selber bestimmen kann. Also

    X-Achse Maximaler Wert= TextBox1.text ' oder so

    mit

    myPane.XAxis.Scale.Max

    habe ich das nicht richtig hinbekommen.
    ja okay nach dem refresh gehts :) Wie kann ich denn festlegen das er in 10er Schritten hochzählen soll?

    Und jetzt noc hwas kniffeliges. Ich habe einen X-Wert z.B: 3,5 und der y-Wert entspricht dem Wert wo 3,5 die y-Achse schneidet. Kann man sowas auch machen?

    Und wegen dem Unendlich zeichnne. Kann man nicht so zeichnen, das der Graph immer am Ende des Diagramms aufhört

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Croasider“ ()

    Croasider schrieb:

    ja okay nach dem refresh gehts :) Wie kann ich denn festlegen das er in 10er Schritten hochzählen soll?

    Und jetzt noc hwas kniffeliges. Ich habe einen X-Wert z.B: 3,5 und der y-Wert entspricht dem Wert wo 3,5 die y-Achse schneidet. Kann man sowas auch machen?

    Und wegen dem Unendlich zeichnne. Kann man nicht so zeichnen, das der Graph immer am Ende des Diagramms aufhört


    Stepping erreichst du über Scale.MajorStep (Beschriftete Punkte) Scale.MinorStep (zwischen Schritte).
    Oder willst du festlegen das der User den Zoom nur in 10er Schritten ändern darf? Dann musst du ein NumericUpDown benutzen anstatt einer TextBox.

    Was genau meinst du mit dem Schnittpunkt? Suchst du den Punkt wo eine vertikale Line auf X=3.5 die Y-Achse deines Graphen schneidet?
    In der PointPairList gibt es eine Funktion InterpolateX/InterpolateY damit wird der Schnittpunkt errechnet ausgehend von einem Punkt auf X Richtung Y bzw andersrum.

    Wenn du willst das zwischen dem Ende des Graphen und dem Ende der Zeichenfläche keine Lücke ist darf XAxis.Scale.Max nicht Größer als den letzter X Wert sein.
    Also das soll so werden:

    Ich habe 2 Graphen. Jetzt habe ich eine Rechnung bei der für den Ersten Graphen 2 und für den zweiten Graphen 3,5 rauskommt. Jetzt möchte ich gerne einen neuen Graphen zeichnen und zwar von da an wo x=2 den ersten Graphen schneidet und wo x=3,5 den Zweiten Graphen schneidet. Ca so (ganz Grob):

    BILD ENTFERNT AUS ÜBERSICHTLICHEN GRÜNDEN

    Der rote soll gezeichnet werden.

    EDIT:Habs hinbekommen :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Croasider“ ()

    Und wie kann ich alles über einem Graphen mit Farbe füllen? Habe nur den Code für drunter gefunden:

    VB.NET-Quellcode

    1. myCurve_1.Line.Fill = New Fill(Color.Blue, Color.Green, 45.0F)


    Und kann man auch irgendwie ads Zoomen mit dem Scrollrad verbieten? Außerdem wäre es auch schön wenn man mit der Maus über den Graph geht das er dann den X-Wert in einem kleinen Popup neben der Maus anzeigt. Geht das auch irgendwie?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Croasider“ ()