2016-11-05 105 views
1

我正在使用DevExpress Line Chart,我遇到了一個小問題。下面的代碼是我的個人pinger應用程序的一部分,我ping很多設備作爲我的工作職責的一部分,以測試連接是否聯機並且速度合理。我試圖讓ping在折線圖上可視化,但是我使用下面的代碼添加到圖表中的每個值都不會與另一個連接。實時繪製圖表數據Visual Basic

但是,如果我拿出註釋代碼series1.Points.Add(New SeriesPoint(15, 50))所有點/數據點連接到圖表上的那個...所以我認爲它只是不識別其他值連接,因爲我分別添加它們/即時的。

有沒有一種方法可以告訴圖表連接到最近的參數值?所以Ping 1點用一條線連接到Ping 2點。

Do While PingCounter <= 10 
      'Increment Ping Counter 
      PingCounter = PingCounter + 1 

      'Ping and return values 
      Dim ping As Ping = New Ping() 
      Dim pingreply As PingReply = ping.Send(txtHost.Text) 
      ListBox1.Items.Add("Ping ID: " & PingCounter.ToString) 
      ListBox1.Items.Add("Address: " & pingreply.Address.ToString() & Constants.vbCr) 
      ListBox1.Items.Add("Roundtrip Time: " & pingreply.RoundtripTime & Constants.vbCr) 
      ListBox1.Items.Add("TTL (Time To Live): " & pingreply.Options.Ttl & Constants.vbCr) 
      ListBox1.Items.Add("Buffer Size: " & pingreply.Buffer.Length.ToString() & Constants.vbCr) 

      'Declare integer for ping time 
      Dim TripTime As Integer = pingreply.RoundtripTime 

      'Clear chart1 
      'Chart1.Series.Clear() 

      'Update chart with ping ID and Ping Time 
      Dim series1 As New DevExpress.XtraCharts.Series("Realtime Ping", ViewType.Line) 
      series1.Points.Add(New SeriesPoint(PingCounter, TripTime)) 
      'series1.Points.Add(New SeriesPoint(15, 50)) 

      Chart1.CrosshairOptions.HighlightPoints = True 
      Chart1.CrosshairOptions.ShowValueLine = True 
      CType(series1.View, LineSeriesView).LineStyle.DashStyle = DashStyle.Solid 

      ' Add the series to the chart. 
      Chart1.Series.Add(series1) 
      My.Application.DoEvents() 
     Loop 

這是概念代碼只是prototyle /防爆顯然會顯著整理了後臺工作。

回答

1

您將每個點添加爲圖表的不同系列。在循環外部聲明並添加一個系列,併爲其添加點。

Dim series1 As New DevExpress.XtraCharts.Series("Realtime Ping", ViewType.Line) 
Chart1.Series.Add(series1) 
CType(series1.View, LineSeriesView).LineStyle.DashStyle = DashStyle.Solid 
Chart1.CrosshairOptions.HighlightPoints = True 
Chart1.CrosshairOptions.ShowValueLine = True 
Do While PingCounter <= 10 
    'Increment Ping Counter 
    PingCounter = PingCounter + 1 

    'Ping and return values 
    Dim ping As Ping = New Ping() 
    Dim pingreply As PingReply = ping.Send(txtHost.Text) 
    ListBox1.Items.Add("Ping ID: " & PingCounter.ToString) 
    ListBox1.Items.Add("Address: " & pingreply.Address.ToString() & Constants.vbCr) 
    ListBox1.Items.Add("Roundtrip Time: " & pingreply.RoundtripTime & Constants.vbCr) 
    ListBox1.Items.Add("TTL (Time To Live): " & pingreply.Options.Ttl & Constants.vbCr) 
    ListBox1.Items.Add("Buffer Size: " & pingreply.Buffer.Length.ToString() & Constants.vbCr) 

    'Declare integer for ping time 
    Dim TripTime As Integer = pingreply.RoundtripTime 


    'Update chart with ping ID and Ping Time 

    series1.Points.Add(New SeriesPoint(PingCounter, TripTime)) 

    My.Application.DoEvents() 
Loop 

連接了一個系列中的所有點。例如,如果您想在同一個圖表中以不同顏色繪製其他數據,則會使用多個系列。因此,如果在你的代碼中,你取消了你提到的那一行的註釋,那麼每個序列都包含兩個連接的點(總是具有相同值的一個點)。你想要的是一個系列中的所有點。

+0

非常感謝Jens!我非常感謝你的幫助。 – user3516240