zedgraph, как конвертировать XAxis.Scale.Min в дату - PullRequest
0 голосов
/ 16 декабря 2011

Я использую zedgraph для рисования фигур в моем проекте vb.net. Ось X цифры - дата .У меня есть два текстовых поля, показывающие минимальное и максимальное значения оси X в дате.В следующем коде показано, как получить значения оси x при увеличении фигуры с помощью свойства isEnableWheelZoom, см. Также эту ссылку zedgraph EnableWheelZoom, как получить значения оси после увеличения? .Но я обнаружил, что получаю только значение оси, например 4508.345, но NOT желаемую дату.На самом деле на рисунке она правильно показывает дату.У меня вопрос как получить минимальную и максимальную дату на рисунке?

    Friend WithEvents gcMain As ZedGraph.ZedGraphControl 
Me.gcMain.IsZoomOnMouseCenter = True 
Me.gcMain.IsEnableWheelZoom = True 

    Private Sub gcMain_ZoomEvent(ByVal sender As ZedGraphControl, ByVal oldState As ZoomState, ByVal newState As ZoomState) Handles gcMain.ZoomEvent
    tbxRangeStart.Text = CStr(New XDate(gcMain.GraphPane.XAxis.Scale.Min))
    tbxRangeEnd.Text = CStr(New XDate(gcMain.GraphPane.XAxis.Scale.Max))

End Sub

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

На самом деле XAxis.Min и XAxis.Max являются XLDate.Таким образом, ответ заключается в использовании XLDateToCalendarDate

Private Sub gcMain_ZoomEvent(ByVal sender As ZedGraphControl, ByVal oldState As ZoomState, ByVal newState As ZoomState) Handles gcMain.ZoomEvent

    Dim xlMin, xlMax As Double
    Dim year, month, day, hour, minute As Integer
    Dim second As Double
    Dim dateStart As Date
    Dim dateEnd As Date

    xlMin = gcMain.GraphPane.XAxis.Scale.Min
    xlMax = gcMain.GraphPane.XAxis.Scale.Max

    ZedGraph.XDate.XLDateToCalendarDate(xlMin, year, month, day, hour, minute, second)
    dateStart = New Date(year, month, day, hour, minute, CInt(second))

    ZedGraph.XDate.XLDateToCalendarDate(xlMax, year, month, day, hour, minute, second)
    dateEnd = New Date(year, month, day, hour, minute, CInt(second))

                SetDateText(textbox1.TextBox, dateStart)
                SetDateText(text)

End Sub

    Private Sub SetDateText(ByRef tbx As TextBox, ByVal dte As Date)
    Try
        tbx.Text = dte.Hour.ToString("00") + " : " + dte.Minute.ToString("00")
    Catch
    End Try
End Sub
0 голосов
/ 19 декабря 2011

Ты почти понял. Вам нужно только преобразовать его в DateTime:

Dim minDate As XDate = New XDate(gcMain.GraphPane.XAxis.Scale.Min)
tbxRangeStart.Text = minDate.DateTime.ToString()

См. API для получения дополнительной информации о XData-формате.

...