在部分屏幕上移动图像的最佳方法是什么?

时间:2011-01-01 20:59:15

标签: c# silverlight-4.0 windows-phone-7

我有一个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 :(得分:2)

使用故事板 - 这是硬件可加速的,并且都出现在Render线程上,所以你会看到比直接反复更新位置要好得多的性能。

故事板具有基于时间而不是基于帧的优势,因此很容易声明“我希望图像在0.5秒内移动”并且它将会发生。

答案 1 :(得分:0)

Thread.Sleep将冻结所有UI处理,使用Dispatcher类。