У меня есть прямоугольник, который нужно переместить, используя Canvas.SetLeft(rect, x);
Но я хочу, чтобы он выглядел как плавный переход (анимация).Вот фрагмент кода, который должен это сделать:
void animate()
{
for (int a = 0; a < 10; a++)
{
MainWindow.current.Dispatcher.BeginInvoke(new Action(move));
x += 10;
Thread.Sleep(100);
}
}
void move()
{
Canvas.SetLeft(rect, x);
}
Это кажется очень простым, но у меня возникают проблемы с этим.Я хочу, чтобы поток немного поспал, а затем установил для прямоугольника x новое значение.Но вместо этого нить спит 30*10
миллисекунд, а затем прямоугольник мгновенно перемещается вправо на 10 * 10 единиц.Я не могу получить эффект анимации, который хочу.И я знаю, что я вызвал Sleep
в потоке GUI, но я не думаю, что это должно повлиять на анимацию.