2011-01-01 24 views
0

私はSilverlight WP7アプリケーションと、画面上にスライドさせるように見せたい画像を私のページに持っています。これを行う最善の方法は何ですか?私はこれをすばやく書きましたが、メソッド全体が完了するまでUIは更新されません。画面の一部に画像を移動する最も良い方法は?

private void SpinImg(Image img, double left) { 
     for(int i = 1; i <= 10000; i++) { 
      img.Margin = new Thickness(left, img.Margin.Top + 1, 0, 0); 
      if(img.Margin.Top > 314) { 
       //move it to the top 
       img.Margin = new Thickness(left, -105, 0, 0); 
      } 
      int wait = 1000/i; 
      Thread.Sleep(wait); 
     } 
    } 

答えて

2

ストーリーボードを使用します。これはハードウェアアクセラレーションが可能で、すべてがレンダリングスレッド上で発生するため、位置を何度も何度も更新しようとするよりもはるかに優れたパフォーマンスが得られます。

ストーリーボードは、フレームベースではなく時間ベースであるという利点があるため、「イメージを0.5秒以内に移動したい」と宣言するのは簡単です。

0

Thread.SleepはすべてのUI処理をフリーズし、Dispatcherクラスを使用します。

関連する問題