Я пытаюсь изучить WPF и анимацию. У меня есть простая программа, которая позволяет пользователю перемещать эллипс с помощью мыши. Когда кнопка мыши отпущена, положение эллипса анимируется по направлению к верхней части экрана.
Это отлично работает в первый раз, когда я хватаю эллипс. Но во второй раз, когда я хватаю эллипс, я больше не могу изменить его положение по оси Y (но я все еще могу изменить положение по оси X). Удаляет ли анимация прикрепленное Canvas.Top
свойство? Как исправить эту проблему?
Вот код запуска анимации (находится в обработчике MouseUp)
Duration duration = new Duration(TimeSpan.FromSeconds(5.0*oldY/1000));
DoubleAnimation anim = new DoubleAnimation(oldY, 0, duration); // move to top of canvas
_shapeSelected.BeginAnimation(Canvas.TopProperty, anim);
а вот обработчик перемещения мыши
private void Canvas_MouseMove_1(object sender, MouseEventArgs e)
{
if (_shapeSelected != null)
{
Point pt = e.GetPosition(theCanvas);
Canvas.SetLeft(_shapeSelected, (pt.X-_posOfMouseOnHit.X) + _posOfShapeOnHit.X );
Canvas.SetTop(_shapeSelected, (pt.Y-_posOfMouseOnHit.Y) + _posOfShapeOnHit.Y );
}
}