使用工具
- vs2019
- 点击新建,c#windows窗体应用
- 语言c#
大致方法
插件
- 在视图中找到工具箱
- 在工具箱找到对应的插件摆放
- 放到中间窗口之后,右键组件,选择属性
- 在右侧改变对应样式
功能
-
在属性中,上方选择栏选择闪电标识
-
下方选择对应功能,回车并且跳转至功能函数
-
编写对应功能
波形显示上位机设计
控件选择摆放
- 设计需要实现的功能
- 三路波形通道,各自能够实现方波、正弦波以及随机波形
- 将波形绘制出来
- 能够修改图例,x、y轴标题和总标题
- 鼠标跟随显示对应的坐标位置
- 动态显示波形的位置
- 将需要实现的功能,划分为若干区域
- 分为三个区域
- 左上为绘图区,下侧为功能区,右侧为波形输入
- 下侧又分为标题设置和模式选择
- 右侧分为三个通道
-
在区域中,将具体功能落实到对应的控件上
-
最终摆放效果图
具体功能实现
-
波形绘制
右侧选择若干textbox输入每个通道的信息,在功能区绘图
-
参数确定
确定参数之后,进行绘图 -
三通道均可以设置
完成图
具体代码如下:
//绘图
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";
}
}
- 能够修改图例以及下x、y、标题
效果如下
原理同上 - 鼠标跟随坐标、波形对应坐标
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
样式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轴
}
其他两种类似