我正在尝试为示波器设计GUI作为我的MTech项目的一部分。虽然在从用户输入X轴和Y轴后设置刻度没有问题,但是我在显示波形时遇到了问题。现在,我正在使用PolyLine
。每次收到新值时,都会更新disp
数组,清除当前内容并显示波形。
这是我编写的代码片段,只是为了添加元素并清除Grid
。
public partial class MainWindow : Window
{
int[] disp = new int[500];
private int x = 0;
Polyline Wave=new Polyline();
public MainWindow()
{
InitializeComponent();
}
private void SetValue_Click(object sender, RoutedEventArgs e)
{
x++;
SetValue_disp(x);
}
private void SetValue_disp(int x)
{
for (int i = 0; i < disp.Length; i++)
disp[i] = x;
}
private void Clear_Click(object sender, RoutedEventArgs e)
{
TheDisp.Children.Clear();
}
private void Apply_Click(object sender, RoutedEventArgs e)
{
Wave.StrokeThickness = 2;
int i = 0;
foreach (int isp in disp)
{
Wave.Points.Add(new Point(i, isp));
i++;
}
TheDisp.Children.Add(Wave);
}
}
我有以下疑惑 1)单击“应用”按钮时,为什么元素不显示 2)必须有一种比清除整个网格并重新重新显示整个数据更好的方法
任何形式的帮助表示赞赏。
答案 0 :(得分:2)
1)为什么单击“应用”按钮时不显示该元素
因为您没有设置Stroke
的{{1}}属性。请将此行添加到PolyLine
方法中:
Apply_Click
2)必须有一种比清除整个网格并重新显示整个数据更好的方法
由于Points实际上位于对象Wave.Stroke = Brushes.Red;
中,因此在那里处理它们就足够了。立即将PolyLine
添加到构造函数中的Wave
:
Graph.Children
现在,当您向public MainWindow()
{
InitializeComponent();
TheDisp.Children.Add(Wave);
}
添加值时,它们将显示在图表中。现在,随着时间的推移,新值将添加新的值,并为您添加的每个值删除第一个值。
Wave.Points
点数将保持不变。正确处理X轴时,可以模拟示波器流程。