您可以使用Chart控件來繪制實時曲線圖。以下是一個簡單的示例代碼:
首先,在您的WinForms窗體中添加一個Chart控件。
然后,使用以下代碼在Form_Load事件中初始化Chart控件:
private void Form1_Load(object sender, EventArgs e)
{
// 設置Chart控件的屬性
chart1.ChartAreas.Add("area");
chart1.Series.Add("series");
chart1.Series["series"].ChartType = SeriesChartType.Line;
chart1.Series["series"].Color = Color.Red;
chart1.Series["series"].BorderWidth = 2;
chart1.Series["series"].XValueType = ChartValueType.Time;
chart1.ChartAreas["area"].AxisX.LabelStyle.Format = "HH:mm:ss";
chart1.ChartAreas["area"].AxisX.IntervalType = DateTimeIntervalType.Seconds;
chart1.ChartAreas["area"].AxisX.Interval = 1;
chart1.ChartAreas["area"].AxisX.ScaleView.Size = 5;
// 啟動一個定時器,每隔一段時間更新圖表
timer1.Interval = 1000; // 每秒更新一次
timer1.Start();
}
接下來,使用以下代碼在Timer_Tick事件中更新圖表:
private void timer1_Tick(object sender, EventArgs e)
{
// 生成一個隨機數據點
double yValue = new Random().NextDouble() * 100;
DateTime xValue = DateTime.Now;
// 添加數據點到Series
chart1.Series["series"].Points.AddXY(xValue, yValue);
// 刪除超出X軸范圍的數據點
while (chart1.Series["series"].Points.Count > 0 && chart1.Series["series"].Points[0].XValue < xValue.AddSeconds(-5).ToOADate())
{
chart1.Series["series"].Points.RemoveAt(0);
}
// 設置X軸的視圖范圍
chart1.ChartAreas["area"].AxisX.ScaleView.Position = xValue.AddSeconds(-5).ToOADate();
chart1.ChartAreas["area"].AxisX.ScaleView.Size = 5;
}
最后,記得在Form_FormClosing事件中停止定時器:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
timer1.Stop();
}
這樣,您就可以實時繪制曲線圖了。每秒鐘,會生成一個隨機的數據點,并添加到Series中。同時,會保持X軸的視圖范圍在最近5秒內的數據。