基于winform的波形显示上位机设计

1 篇文章 0 订阅
1 篇文章 0 订阅

使用工具

  1. vs2019
  2. 点击新建,c#windows窗体应用
    在这里插入图片描述
  3. 语言c#

大致方法

插件

  1. 在视图中找到工具箱
    在这里插入图片描述
  2. 在工具箱找到对应的插件摆放
    在这里插入图片描述
  3. 放到中间窗口之后,右键组件,选择属性
    在这里插入图片描述
  4. 在右侧改变对应样式
    在这里插入图片描述

功能

  1. 在属性中,上方选择栏选择闪电标识
    blog.csdnimg.cn/20210104194205402.png)

  2. 下方选择对应功能,回车并且跳转至功能函数
    在这里插入图片描述

  3. 编写对应功能
    在这里插入图片描述

波形显示上位机设计

控件选择摆放

  1. 设计需要实现的功能
  • 三路波形通道,各自能够实现方波、正弦波以及随机波形
  • 将波形绘制出来
  • 能够修改图例,x、y轴标题和总标题
  • 鼠标跟随显示对应的坐标位置
  • 动态显示波形的位置
  1. 将需要实现的功能,划分为若干区域
  • 分为三个区域
  • 左上为绘图区,下侧为功能区,右侧为波形输入
  • 下侧又分为标题设置和模式选择
  • 右侧分为三个通道
  1. 在区域中,将具体功能落实到对应的控件上

  2. 最终摆放效果图

在这里插入图片描述

具体功能实现

  1. 波形绘制
    右侧选择若干textbox输入每个通道的信息,在功能区绘图
    在这里插入图片描述

  2. 参数确定
    确定参数之后,进行绘图

  3. 三通道均可以设置
    完成图

在这里插入图片描述

具体代码如下:

//绘图
            chart1.Series[2].Points.Clear();//清除图表
            if (index3 == 1)//正弦波
            {
                int t3 = int.Parse(wave3t.Text);
                int A3 = int.Parse(wave3A.Text);
                int fi3 = int.Parse(wave3fi.Text);
                for (int i = 0; i < 720; i++)
                {
                    chart1.Series[2].Points.AddXY(i, A3 * Math.Sin(i * Math.PI * 2 / t3 + fi3));
                    chart1.Series[2].BorderWidth = 3;
                    chart1.Series[2].Color = Color.Yellow;
                    chart1.ChartAreas[0].AxisX.Title = "x";
                    chart1.ChartAreas[0].AxisY.Title = "y";
                }
            }
            if (index3 == 2)//方波
            {
                int t3 = int.Parse(wave3t.Text);
                int A3 = int.Parse(wave3A.Text);
                int fi3 = int.Parse(wave3fi.Text);
                for (int i = 0; i < 720; i++)
                {
                    if (((i + fi3) % t3) <= (t3 / 2))
                    {
                        chart1.Series[2].Points.AddXY(i, A3);
                        chart1.Series[2].BorderWidth = 3;
                        chart1.Series[2].Color = Color.Yellow;
                        chart1.ChartAreas[0].AxisX.Title = "x";
                        chart1.ChartAreas[0].AxisY.Title = "y";
                    }
                    else
                    {
                        chart1.Series[2].Points.AddXY(i, -A3);
                        chart1.Series[2].BorderWidth = 3;
                        chart1.Series[2].Color = Color.Yellow;
                        chart1.ChartAreas[0].AxisX.Title = "x";
                        chart1.ChartAreas[0].AxisY.Title = "y";
                    }

                }
            }

            if (index3 == 3)//生成任意波形
            {
                Random ran_y = new Random();
                for (int i = 0; i < 720; i = i + 50)
                {

                    chart1.Series[2].Points.AddXY(i, ran_y.Next(-100, 100));
                    chart1.Series[2].BorderWidth = 3;
                    chart1.Series[2].Color = Color.Yellow;
                    chart1.ChartAreas[0].AxisX.Title = "x";
                    chart1.ChartAreas[0].AxisY.Title = "y";
                }


            }
  1. 能够修改图例以及下x、y、标题
    效果如下
    在这里插入图片描述
    原理同上
  2. 鼠标跟随坐标、波形对应坐标
    在这里插入图片描述
 private void chart1_MouseMove(object sender, MouseEventArgs e)
        {
            var area = chart1.ChartAreas[0];

            double xValue = area.AxisX.PixelPositionToValue(e.X);
            double yValue = area.AxisY.PixelPositionToValue(e.Y);
            textBox4.Text = string.Format("{0:F0},{1:F0}", xValue, yValue);//鼠标实时位置
        }

 private void chart1_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e)
        {
            HitTestResult myTestResult = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint);//获取命中测试的结果
            if (myTestResult.ChartElementType == ChartElementType.DataPoint)
            {
                int i = myTestResult.PointIndex;
                DataPoint dp = myTestResult.Series.Points[i];
                string XValue = dp.XValue.ToString();//获取数据点的X值
                string YValue = dp.YValues[0].ToString();//获取数据点的Y值
                e.Text = "x:" + XValue + "\r\ny" + YValue;
            }
        }



  1. 更改绘图样式
    三种样式
    默认
    在这里插入图片描述
    样式1
    在这里插入图片描述

样式2

在这里插入图片描述

 private void yangshi0_Click(object sender, EventArgs e)//默认样式选择
        {
            chart1.BackColor = System.Drawing.Color.White;//背景颜色
            chart1.ChartAreas[0].BackColor = System.Drawing.Color.White;//表格背景
            chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Black;//x轴
            chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;//y轴
        }

其他两种类似

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值