2016-11-20 108 views
2

我想爲示波器設計一個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

多一點信息會有幫助。什麼'類型'是'TheDisp'?讓所有信息重現您的問題將是一件好事。 –

+0

TheDisp是一個網格 –

回答

2

1)爲什麼不顯示的元素時,它的應用按鈕

點擊,因爲你沒有設置PolyLineStroke財產。請加入這一行到您的Apply_Click方法:

Wave.Stroke = Brushes.Red; 

2)必須有一個更好的辦法,而不是清除整個電網和所有一遍

重新顯示整個數據自點實際上在對象PolyLine它應該足以在那裏處理它們。添加Wave馬上到Graph.Children在構造函數中:

public MainWindow() 
{ 
    InitializeComponent(); 

    TheDisp.Children.Add(Wave); 
} 

如果現在值添加到它們將顯示在圖表中的Wave.Points。現在,隨着時間的推移和新的價值觀的加入,只需添加新的價值觀,併爲您添加的每個價值觀去除第一個價值觀。

Wave.Points.Add(new Point(X, Y)); 
// remove the first value 
Wave.Points.RemoveAt(0); 

點數將保持不變。當您正確處理X軸時,您可以模擬示波器流程。