C#生成波形图(chart)

做一些软件时需要输出图表(折线图等),本文介绍的就是vs拥有的chart控件
当然还有其他单独的控件等,这里就不进行其他的描述了,毕竟自带的就是香

折线图如下(波形图在这里就不进行展示了)
在这里插入图片描述在图表启动时一点要先进行初始化操作,操作指令如下

InitChart();

开始和停止指令如下
this.timer1.Start();//开始
this.timer1.Stop();//停止

设置图表的各种参数代码如下,可根据自身需要进行修改

private void InitChart()//设置图表
        {
            //定义图表区域
            this.chart1.ChartAreas.Clear();
            ChartArea chartArea1 = new ChartArea("C1");
            this.chart1.ChartAreas.Add(chartArea1);
            //定义存储和显示点的容器
            this.chart1.Series.Clear();
            Series series1 = new Series("S1");
            series1.ChartArea = "C1";
            this.chart1.Series.Add(series1);
            //设置图表显示样式
            this.chart1.ChartAreas[0].AxisY.Minimum = 0;
            this.chart1.ChartAreas[0].AxisY.Maximum = 100;
            this.chart1.ChartAreas[0].AxisX.Interval = 5;
            this.chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver;
            this.chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver;
            //设置标题
            this.chart1.Titles.Clear();
            this.chart1.Titles.Add("S01");
            this.chart1.Titles[0].Text = "我也不知道";
            this.chart1.Titles[0].ForeColor = Color.RoyalBlue;
            this.chart1.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
            //设置图表显示样式
            this.chart1.Series[0].Color = Color.Blue;
            if (rb1.Checked)
            {
                this.chart1.Titles[0].Text = string.Format("这是个假图 {0} 显示", rb1.Text);
                this.chart1.Series[0].ChartType = SeriesChartType.Line;
                this.chart1.Series[0].ChartType = SeriesChartType.FastLine;
            }
            if (rb2.Checked)
            {
                this.chart1.Titles[0].Text = string.Format("这也不是真的", rb2.Text);
                this.chart1.Series[0].ChartType = SeriesChartType.Spline;
                this.chart1.Series[0].ChartType = SeriesChartType.FastLine;
            }
            this.chart1.Series[0].Points.Clear();
        }

对chart数据的更新代码如下

        private void UpdateQueueValue()//更新数据
        {
            if (dataQueue.Count > 100)
            {
                //先出列
                for (int i = 0; i < num; i++)
                {
                    dataQueue.Dequeue();
                }
            }
            if (rb1.Checked)
            {
                Random r = new Random();
                for (int i = 0; i < num; i++)
                {
                    dataQueue.Enqueue(r.Next(0, 100));
                }
            }
            if (rb2.Checked)
            {
                for (int i = 0; i < num; i++)
                {
                    //对curValue只取[0,360]之间的值
                    curValue = curValue % 360;
                    //对得到的正玄值,放大50倍,并上移50
                    dataQueue.Enqueue((50 * Math.Sin(curValue * Math.PI / 180)) + 50);
                    curValue = curValue + 10;
                }
            }
        }
 private void timer1_Tick_1(object sender, EventArgs e)//定时器
        {
            UpdateQueueValue();
            this.chart1.Series[0].Points.Clear();
            for (int i = 0; i < dataQueue.Count; i++)
            {
                this.chart1.Series[0].Points.AddXY((i + 1), dataQueue.ElementAt(i));
            }
        }

需要用到的几个变量如下

private Queue<double> dataQueue = new Queue<double>(100);
    private int curValue = 0;
    private int num = 5;//每次删除增加几个点

代码可以直接使用,后期将会将写一篇Y轴自适应的和生成多线的文章敬请期待

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C#上位机中,波形图的显示通常需要以下几个步骤: 1. 创建一个用于显示波形的窗口或控件。在引用\[3\]中的代码中,可以看到通过调用CreateDisplayer()方法来创建波形显示窗口。 2. 在串口接收数据处理函数中,将接收到的数据添加到绘图窗口的数据链表中。在引用\[2\]中的代码中,可以看到通过调用Displayer.AddData(data)方法将接收到的数据添加到绘图窗口的数据链表中。 3. 在需要显示波形的时候,调用相应的按钮事件或方法。在引用\[3\]中的代码中,可以看到通过点击button3按钮来触发显示波形的操作。 需要注意的是,以上代码只是一个示例,具体的实现方式可能会根据项目的需求和具体的控件库而有所不同。你可以根据自己的需求进行相应的修改和调整。 #### 引用[.reference_title] - *1* [c#上位机多通道ADC采样波形显示](https://blog.csdn.net/sinat_23338865/article/details/52850639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C#上位机(绘制波形)](https://blog.csdn.net/weixin_42536748/article/details/124379352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值