Winformでリアルタイムの折れ線グラフを描画の方法

リアルタイムグラフを表示するには、Chartコントロールが使用できます。以下は簡単なサンプルコードです。

まずは、あなたの Windows フォームに 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();
}

こうすることで、時間経過とともにグラフをリアルタイムで描画できます。1秒ごとにランダムなデータポイントが生成され、Seriesに追加されます。それと同時に、X軸の可視範囲は最新の5秒内のデータに保持されます。

bannerAds