zhu_zy123 2025-05-15 14:03 采纳率: 14.3%
浏览 10

chart控件实时数据显示

实现效果:
想要通过chart控件实现一个实时数据在折现图上显示(如下图所示),但是要有横向的拉条。在当前的可视画面中最新的一些数据,显示不了的(旧的)数据,需要通过拉条往前查看。
类似于textbox,当数据量超过当前界面的显示量时,会出现拉条,先要查看之前的数据,就通过拉条回拉去查看。

框架:winform .net framework4.8

自己实现了半天,以及参考网上的很多材料,最终还是失败了,只能在界面上实时显示数据,没有横坐标的拉条,看不了之前旧的数据(如下如图所示)。
求帮忙解决一下,有个详细的demo或者代码。
一旦帮忙解决或者有mode,本人有偿回报

img

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-05-15 14:03
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你想要实现一个实时数据显示的 chart控件,具有横向的拉条,可以查看历史数据。C# 是你的开发语言。

    可以使用 ZedGraph 库,它提供了一个强大的 chart控件,可以实现你想要的功能。

    以下是一个简单的示例代码:

    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using ZedGraph;
    
    public partial class Form1 : Form
    {
        private int _currentIndex = 0;
        private List<double> _data = new List<double>();
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void timer1_Tick(object sender, EventArgs e)
        {
            // 生成新的数据
            _data.Add(Math.Sin(DateTime.Now.Second * 0.01));
            if (_data.Count > 100)
            {
                _data.RemoveAt(0);
            }
    
            // 更新 chart
            graphPane.XAxis.Scale.Min = _currentIndex;
            graphPane.XAxis.Scale.Max = _currentIndex + 100;
            graphPane.AddCurve("数据", _data, Color.Red, SymbolType.Circle);
            graphPane.AxisChange();
    
            // 更新拉条
            trackBar1.Value = _currentIndex;
            _currentIndex++;
        }
    }
    

    在上面的代码中,我们使用 ZedGraph 库创建了一个 chart控件,并使用 Timer 事件生成新的数据,并将其添加到 chart控件中。同时,我们也更新了拉条的值,以便用户可以查看历史数据。

    你可以根据自己的需求修改代码,并将其集成到你的项目中。

    重要提示

    请注意,你需要在项目中添加 ZedGraph 库,并将其引用到你的项目中。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月15日