阅读量:3
您可以使用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秒内的数据。