WPF

2009-06-03 9 views
4

で正弦波を描くWPFでの正弦波を描画する方法WPF

、この1つは非常に愚かなようだが、私はこれを行うには時間からstrugllingてる?

おかげであなたはMath.Sin機能と計算点間

答えて

4

ドローライン。サイクルあたりのポイント数は、描画速度と精度との間の妥協点を決定する必要があります。おそらく、Sin関数は+1と-1の間の値を返すので、画面上の領域に合わせて振幅をスケールする必要もあります。

+0

ありがとうマーティン、私はあなたの解決策を試してみる –

3

「ドローイング」はどうやってやっていますか? WPFにはWinFormsのようなOnPaintイベントがありませんので、少し難解かもしれません。 WinFormsでこれを行う方法はGraphics.DrawBezier方法

e.Graphics.DrawBezier(new Pen(new SolidBrush(Color.Red)), 
          new Point(0, 100), 
          new Point(50, 0), 
          new Point(50, 200), 
          new Point(100, 100)); 

は、多分それは便利ですが、私はWPFキャンバスに直接描画する方法さえわからない使用することであっただろう。

MSDNのように簡単に見ると、おそらくあなたの役に立つBezierSegmentコントロールがあります。

2

ポイント間のカーブが必要な場合は、PolyBezierを使用して、Math.Sinメソッドから計算されたPointCollectionでSine Waveを描画できます。別の方法として、お互いから流れ出るBezierSegmentsをたくさん作ることができます。最後に、PolyBezierまたはBezierSegmentsをpaintarea.Children.Add(曲線)を使ってフォームに追加します。ここで、描画領域は、描画するグリッドまたはキャンバスです。