在实时Visual Basic中绘制图表数据

时间:2016-11-05 13:33:50

标签: vb.net charts devexpress linechart

我正在与DevExpress Line Chart合作,我遇到了一个小问题。下面的代码是我个人pinger应用程序的一部分,我将许多设备作为我工作职责的一部分来测试连接是否在线且速度合理。我试图让ping在线图上可视化,但是我使用下面的代码添加到图表中的每个值都不会与另一个相连。

但是,如果我拿出评论代码series1.Points.Add(New SeriesPoint(15, 50)),所有点/数据点都连接到图表上的那个...所以我认为它只是没有识别要连接的其他值因为我&#39 ; m分开/实时添加它们。

有没有办法告诉图表连接到最近的参数值?所以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 个答案:

答案 0 :(得分: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

一个系列中的所有点都已连接。例如,如果您想在同一图表中绘制不同颜色的其他数据,则会使用多个系列。因此,如果在您的代码中,您取消注释了您提到的行,则每个系列都包含两个连接点(一个点始终具有相同值)。你想要的是一个系列中的所有要点。