2011-08-16 7 views
0

私はキャンバスを持っており、その上にフリーハンドの描画ができます(これはhttp://www.windowsphonegeek.com/tips/drawing-in-wp7-2-drawing-shapes-with-fingerと同様です)。私の要件は、私は図面を再生し、programaticalyを一時停止させる必要があります。ボタンがあります。クリックすると、描画された方法で描画されます。サンプルアプリケーションやリンクがある場合でも、これを達成するためにどのような措置を取る必要があるか教えてください。ありがとう。フリーハンドドローイングの再生

+0

座標へ送信するためにDispatcherを使用しています描画中に取り込み、配列に保持することができます。私はそれをどのようにプレイするかについては何も考えていない。ある時点から別の時点までの時間に応じて、自動的に再描画できるように、すべての時点の時間を保存する方法はありますか? – Shri

答えて

0

更新:最終的にこれを修正してWindows Phone 7で動作し、WPFだけでなく動作します。

あなたが引用した例に基づいています。

ポイントのリストを定義します。LeftMouseButtonがダウン最大ある場合は空白のポイントと出発点追加

private List<Point> _points; 

を:あなたの再生ボタンのイベントハンドラは次のようになります

oldPoint = currentPoint; 
_points.Add(new Point(-1, -1)); 
_points.Add(oldPoint); 

をこれは:

canvas.Children.Clear(); 

// Use the BackgroundWorker to draw the lines 
BackgroundWorker worker = new BackgroundWorker(); 
worker.WorkerReportsProgress = true; 
worker.DoWork += new DoWorkEventHandler(worker_DoWork); 
worker.RunWorkerAsync(); 

worker_DoW ORKの_pointsを反復処理し、私たちのディスパッチャへのそれらを送信します。

void worker_DoWork(object sender, DoWorkEventArgs e) 
{ 
     for (int ix = 0; ix < _points.Count - 1; ix++) 
     { 
      Point start = _points[ix]; 
      Point end = _points[ix + 1]; 

      if (start.X == -1 || end.X == -1) 
       continue; 

      Thread.Sleep(10); 
      DoEvents(start, end); 
     } 
} 

のDoEvents行は、私は、ポイントをキャプチャするために私は道をしようとしていた委任方法

private delegate void AddLineDelegate(Point p1, Point p2); 

    private void DoEvents(Point p1, Point p2) 
    { 
     this.Dispatcher.BeginInvoke(new AddLineDelegate(AddLine), new object[] { p1, p2 }); 
    } 

    private void AddLine(Point p1, Point p2) 
    { 
     Line line = new Line() { X1 = p1.X, Y1 = p1.Y, X2 = p2.X, Y2 = p2.Y }; 
     line.Stroke = new SolidColorBrush(Colors.Black); 
     line.StrokeThickness = 4; 
     this.canvas.Children.Add(line); 
    } 
+0

返信と指導をありがとうございます。 – Shri

+0

私はDispatcherFrameに疑念があります。私はsystem.windows.threadingという名前空間を追加しましたが、その名前空間はまだ見つかりません。私はこの技術に慣れていないので、正確な解決策を辿ることができません。君の力が必要。ありがとう。 – Shri

+0

@Shriほぼ1年後、Windows Phone 7で再生がスムーズに行われるように答えを更新しました –