示波器显示

时间:2016-11-20 07:59:13

标签: c# wpf wpfgrid

我正在尝试为示波器设计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)必须有一种比清除整个网格并重新重新显示整个数据更好的方法

任何形式的帮助表示赞赏。

1 个答案:

答案 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轴时,可以模拟示波器流程。