我有一个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);
}
}
答案 0 :(得分:2)
使用故事板 - 这是硬件可加速的,并且都出现在Render线程上,所以你会看到比直接反复更新位置要好得多的性能。
故事板具有基于时间而不是基于帧的优势,因此很容易声明“我希望图像在0.5秒内移动”并且它将会发生。
答案 1 :(得分:0)
Thread.Sleep将冻结所有UI处理,使用Dispatcher类。