ZedGraph - X Achse Zeit beschriften

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von vbneuling88.

    ZedGraph - X Achse Zeit beschriften

    Hallo, anbei mein Quellcode von Zedgraph

    bis jetzt ist es so, dass der Wert geschrieben wird auf der Y Achse und auf der X achse ein INT nur inkrementiert wird. Wie kann man es lösen, dass statt des INT's die Uhrzeit in Folgenden Format stetht "HH:mm:ss" und wie muss ich die PointPairList beschreiben (hier sind ja nur Double erlaubt...)

    habe bei Google schon sehr lange gesucht, habe aber nichts gefunden, da ich ein totaler neuling in sachen VB bin

    VB.NET-Quellcode

    1. Imports ZedGraph
    2. Public Class frmGraph1
    3. Dim graph_x_achse_min As Double = 0
    4. Dim graph_x_achse_max As Double = 2
    5. Dim graph_y_achse_min As Int32 = 0
    6. Dim graph_y_achse_max As Int32 = 100
    7. Dim x_max_change As Boolean = False
    8. Private Sub frmGraph1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. '
    11. CreateGraph(zg1)
    12. txtWert_min.Text = 0
    13. txtWert_max.Text = 100
    14. Timer1.Enabled = True
    15. End Sub
    16. Public Sub GraphInit()
    17. End Sub
    18. Public Sub CreateGraph(ByVal Graph As ZedGraphControl)
    19. Try
    20. Dim myPane As GraphPane = Graph.GraphPane
    21. ' Set the titles and axis labels
    22. myPane.Title.Text = ""
    23. myPane.XAxis.Title.Text = "Minuten"
    24. myPane.XAxis.MajorGrid.Color = Color.Aqua
    25. myPane.YAxis.Title.Text = ""
    26. ' Make up some data points from the Sine function
    27. myPane.CurveList.Clear()
    28. frmMain.list16_1.Add(frmMain.m_icount / 60, frmMain.Buffer(1))
    29. ' Generate a blue curve with circle symbols, and "My Curve 2" in the legend
    30. If CheckBox1.Checked Then
    31. Dim Kurve16_1 As LineItem = myPane.AddCurve(frmMain.alias16_1.Text, frmMain.list16_1, frmFarben.farben(1), SymbolType.None)
    32. End If
    33. ' Fill the area under the curve with a white-red gradient at 45 degrees
    34. 'myCurve.Line.Fill = New Fill(Color.White, Color.Red, 45.0F)
    35. ' Make the symbols opaque by filling them with white
    36. 'myCurve.Symbol.Fill = New Fill(Color.White)
    37. ' Fill the axis background with a color gradient
    38. ' myPane.Chart.Fill = New Fill(Color.White, Color.LightGoldenrodYellow, 45.0F)
    39. ' Fill the pane background with a color gradient
    40. 'myPane.Fill = New Fill(Color.White, Color.FromArgb(220, 220, 255), 45.0F)
    41. myPane.XAxis.Scale.Min = graph_x_achse_min
    42. If myPane.IsZoomed = False Then
    43. If x_max_change = False Then
    44. If myPane.XAxis.Scale.Max < 2 Then
    45. myPane.XAxis.Scale.Max = 2
    46. Else
    47. If frmMain.m_icount / 60 >= myPane.XAxis.Scale.Max Then
    48. myPane.XAxis.Scale.Max = myPane.XAxis.Scale.Max * 2
    49. End If
    50. End If
    51. Else
    52. myPane.XAxis.Scale.Max = graph_x_achse_max
    53. End If
    54. If txtzeit_bis.Focused = False Then
    55. txtzeit_bis.Text = myPane.XAxis.Scale.Max.ToString
    56. End If
    57. myPane.YAxis.Scale.Max = graph_y_achse_max
    58. myPane.YAxis.Scale.Min = graph_y_achse_min
    59. myPane.YAxis.Scale.MinorStep = graph_y_achse_max / 100
    60. myPane.YAxis.Scale.MajorStep = graph_y_achse_max / 20
    61. myPane.XAxis.Scale.MinorStep = myPane.XAxis.Scale.Max / 100
    62. myPane.XAxis.Scale.MajorStep = myPane.XAxis.Scale.Max / 20
    63. Else
    64. myPane.YAxis.Scale.MinorStepAuto = True
    65. myPane.YAxis.Scale.MajorStepAuto = True
    66. myPane.XAxis.Scale.MinorStepAuto = True
    67. myPane.XAxis.Scale.MajorStepAuto = True
    68. End If
    69. graph_x_achse_max = myPane.XAxis.Scale.Max
    70. 'myPane.YAxis.MinorGrid.IsVisible = True
    71. 'myPane.YAxis.MajorGrid.IsVisible = True
    72. 'myPane.XAxis.MajorGrid.IsVisible = True
    73. 'myPane.XAxis.MinorGrid.IsVisible = True
    74. 'Graph.AxisChange()
    75. SetSize()
    76. Me.Refresh()
    77. Catch ex As Exception
    78. MsgBox("Fehler beim Zeichnen des Graphen, Programm wird gestoppt,", vbCritical)
    79. Me.Close()
    80. End Try
    81. End Sub
    82. Private Sub SetSize()
    83. Try
    84. zg1.Location = New Point(10, 10)
    85. ' Leave a small margin around the outside of the control
    86. zg1.Size = New Size(ClientRectangle.Width - 20, ClientRectangle.Height - 110)
    87. pan_graphauswahl.Size = New Size(200, ClientRectangle.Height - 110)
    88. Me.GroupBox3.Location = New System.Drawing.Point(10, ClientRectangle.Location.Y + zg1.Size.Height + 10)
    89. pan_graphauswahl.Location = New System.Drawing.Point(ClientRectangle.Location.Y + zg1.Size.Width + 5, 10)
    90. Label4.Text = "<"
    91. Label4.location = New System.Drawing.Point(0, zg1.Size.Height / 2)
    92. Catch ex As Exception
    93. MsgBox("Fehler beim der Größenberechnung, Programm wird gestoppt,", vbCritical)
    94. End Try
    95. End Sub
    96. Private Sub btnZeit_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZeit_ok.Click
    97. If graph_x_achse_max <> CDbl(txtzeit_bis.Text) Then
    98. x_max_change = True
    99. End If
    100. graph_x_achse_min = CDbl(txtzeit_von.Text)
    101. graph_x_achse_max = CDbl(txtzeit_bis.Text)
    102. CreateGraph(zg1)
    103. End Sub
    104. Private Sub btnZeit_reset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZeit_reset.Click
    105. x_max_change = False
    106. graph_x_achse_min = 0
    107. graph_x_achse_max = 2
    108. CreateGraph(zg1)
    109. End Sub
    110. Private Sub btnWert_min_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWert_min_ok.Click
    111. graph_y_achse_min = CInt(txtWert_min.Text)
    112. CreateGraph(zg1)
    113. End Sub
    114. Private Sub btn_Wert_max_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Wert_max_ok.Click
    115. graph_y_achse_max = CInt(txtWert_max.Text)
    116. CreateGraph(zg1)
    117. End Sub
    118. Private Sub frmGraph_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    119. SetSize()
    120. End Sub
    121. Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click
    122. If Label4.Text = "<" Then
    123. pan_graphauswahl.Location = New System.Drawing.Point(ClientRectangle.Location.Y + zg1.Size.Width - 190, 10)
    124. Label4.Text = ">"
    125. ElseIf Label4.Text = ">" Then
    126. pan_graphauswahl.Location = New System.Drawing.Point(ClientRectangle.Location.Y + zg1.Size.Width + 5, 10)
    127. Label4.Text = "<"
    128. End If
    129. End Sub
    130. Private Sub pan_graphauswahl_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles pan_graphauswahl.Scroll
    131. Label4.Location = New System.Drawing.Point(0, zg1.Size.Height / 2)
    132. End Sub
    133. Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs)
    134. End Sub
    135. End Class
    Dein Post ist sehr lang und enhält viele unnötige Leerzeilen. Tipp: Beim Post Erstellen immer den "Quellcode" reiter und nicht den "Editor" auswählen.
    Bitte reduziere den Quellcode auf ein "minimal working example", also ein möglichst kurzen Quellcode, der dein Problem beschreibt.
    Für Datum und Uhrzeit benutzt man die DateTime Klasse. Für die gewünschte Formatierung benutzt man die entsprechende .toString() Überladung.

    Der Post könnte dir eventuell helfen.
    Ich habe vor paar Monaten damit gearbeitet (Auswertungen der Auslastung von diversen Servern).
    Bin mir zwar nicht mehr sicher, aber ich guck morgen im Geschäft kurz rein, vielleicht habe ich ja deine Lösung (Dein Problem kommt mir bekannt vor).

    Greez Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Hallo

    habe immer noch das Problem, dass die Uhrzeit nicht angezeigt wird

    VB.NET-Quellcode

    1. myPane.XAxis.Type = AxisType.Date
    2. myPane.XAxis.Scale.Format = "HH:mm"


    die Uhrzeit wird von einer Datenbank als DateTime ausgelesen

    Zum hinzufügen in die PoinPairList wird CDbl() verwendet

    das Problem liegt auch noch darin, dass die Uhrzeit in 12h format angezeigt wird, aber nur nach dem auf den Graph mit rechtsklick der Punkt "Set Scale to Default" geklickt wurde

    Ich benötige ein 24h format

    Weiß jemand weiter?

    vbneuling88 schrieb:

    Ich benötige ein 24h format
    So was:

    VB.NET-Quellcode

    1. MessageBox.Show(DateTime.Now.ToShortTimeString)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Problem gelöst

    VB.NET-Quellcode

    1. With myPane.XAxis
    2. .Type = Global.ZedGraph.AxisType.Date
    3. .Scale.Min = graph_x_achse_min
    4. .Scale.Max = graph_x_achse_max
    5. .Scale.MinorUnit = ZedGraph.DateUnit.Minute
    6. .Scale.MajorUnit = ZedGraph.DateUnit.Minute
    7. .Scale.FontSpec.Size = 8
    8. .Scale.MajorStep = 24
    9. .Scale.MinorStep = 4
    10. .Scale.Format = "HH:mm"
    11. End With