C#chart画数据图并可以使数据持续向左移动

C#winform中有chart控件,功能十分强大可以画出多种图像类型,感兴趣的同志可以去搜索一下,我这里只用了默认的线状图,使用定时器画出数据并将100个之后的数据每个左移达到移动的效果

直接上代码

        pualic int data;//画点的Y轴数据(实际应该为传入数据实时变化)
        private int[] Xvalue = new int[100];//定义加入画图对象的X轴数组
        private int[] Yvalue = new int[100];//定义加入画图对象的Y轴数组
        int ass_data1 = 0;//赋值计数
        int lim_data1 = 0;//对Y轴向向左移计数
        private void XValueInit()//初始化X轴的值
        {
            int i = 0;
            for (i = 0; i < 100; i++)
            {
                Xvalue[i] = i;
            }
        }
        private void timer1(object sender, EventArgs e)//timer1定时器画图操作
        {
            chart1.Series.Clear();//每次清空右上角标志
            //chart1.ChartAreas.Clear();
            Series MotorCurrent = new Series("data1");//实例化Series类(chart控件右上角数据)
            int i;
            //Y轴向低位移动                      
            if (lim_data1 > 99)//当100个数据后数据开始左移
            {
                for (i = 0; i < 100; i++)//每次增加X轴的值
                {
                    Xvalue[i] += 1;
                }
                Yvalue[99] = data;//每次将数据给数组最后一个元素
                for (i = 1; i < 100; i++)//将所有数据左移一位达到Y轴左移效果
                {
                    Yvalue[i - 1] = Yvalue[i];
                }
            }
            else//正常赋值
            {
                lim_data1++;
                Yvalue[ass_data1] = data;
            }
            for (i = 0; i < 100; i++)//加入值开始画图
            {
                MotorCurrent.Points.AddXY(Xvalue[i], Yvalue[i]);//加入X轴、Y轴的值 开始画图
            }
            // 更改格线颜色
            chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Black;
            chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Black;

            MotorCurrent.Color = Color.Red;                       //线条颜色 红色

            MotorCurrent.BorderColor = Color.Yellow;                       //标记框颜色 黄色
            MotorCurrent.BorderDashStyle = ChartDashStyle.Solid;                       //连线为虚线
            MotorCurrent.MarkerStyle = MarkerStyle.Circle;         // 标记点形状
            MotorCurrent.MarkerSize = 3;         // 标记点形状
            MotorCurrent.MarkerColor = Color.Red;                 //标记点颜色 红色

            chart1.Series.Add(MotorCurrent);
            chart1.Series[0].ChartType = SeriesChartType.Spline;      //图表类型为曲线  
            chart1.Series[0].BorderWidth = 2;         //线条加粗
        }
        private void button1_Click(object sender, EventArgs e)//启动定时器开始画图
        {            
             XValueInit();//初始化X轴的值
             timer1.Interval = 1000;画点间隔
             timer1.Enabled = true;
             timer1.Start();启动定时器          
        }
        private void button2_Click(object sender, EventArgs e)//停止定时器停止画图
        {
            timer1.Enabled = false;
            timer1.Stop();关闭定时器
        }

这里只是利用定时器和数组的变化简单地实现了左移的效果,如果有更好的方法还请大家悉心指教

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值