2016-11-20 3 views
2

MTechプロジェクトの一部としてオシロスコープのGUIを設計しようとしています。ユーザーからX軸とY軸の入力を受けてからスケールを設定するのに問題はありませんが、波形の表示に問題があります。今、私はPolyLineを使用しています。新しい値が受信されるたびに、disp配列が更新され、現在の内容がクリアされ、波形が表示されます。 これは私が書いたコードです。要素を追加してGridをクリアするだけです。それはグリッド全体をクリアし、するよりも、もっと良い方法がなければならないボタン 2)適用をクリックしたとき、私は、次の疑問が 1)なぜ要素が表示されていないいるオシロスコープの表示

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); 
    } 
} 

全体を再表示しますデータ全体の再読

ヘルプのいずれかのフォームをいただきありがとうございます。

+0

もう少し情報が参考になります。 'TheDisp'とは何でしょうか?あなたの問題を再現するためにすべての情報を持つことは良いことです。 –

+0

TheDispはグリッドです –

答えて

2

1)なぜあなたはPolyLineStrokeプロパティを設定していなかったので、それが適用ボタン

をクリックすると表示されていない要素があります。以来すべての繰り返しがあり、グリッド全体をクリアするよりも、もっと良い方法があり、再表示する全データ

Wave.Stroke = Brushes.Red; 

2)

を:あなたのApply_Clickメソッドに次の行を追加してくださいポイントは実際にはオブジェクト内にありますPolyLineそこではポイントを処理するだけで十分です。あなたは今、彼らがグラフで表示されますWave.Pointsに値を追加すると

public MainWindow() 
{ 
    InitializeComponent(); 

    TheDisp.Children.Add(Wave); 
} 

:すぐにコンストラクタでGraph.ChildrenWaveを追加します。今度は時間が経過し、新しい値が入ってくると、新しい値が追加され、追加する各値の最初の値が削除されます。

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

ポイント数は一定のままです。 X軸を正しく処理すると、オシロスコープの流れをシミュレートできます。

関連する問題