2016-11-05 100 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