Кто-нибудь знает простой способ оживить движение из текущего местоположения изображения в новое место (X, Y) с использованием анимации WPF без XAML, 100% программно? И без ссылки на "this" (с RegisterName и т.д.).
Я пытаюсь сделать класс расширения для Image, чтобы сделать анимацию на нем. Достаточно легко изменить свойства ширины и высоты с помощью анимации, но после поиска анимации местоположения объекта он становится более продвинутым.
Поскольку это класс расширения, у меня будет только ссылка на фактический объект Image, а X и Y - на его перемещение.
public static void MoveTo(this Image targetControl, double X, double Y, double Width, double Height){
//code here
...
}
Update:
Спасибо. Почти работает. Кажется, что GetTop и GetLeft возвращают "NaN", явно не заданные. Обнаружен обходной путь в этом сообщении: Canvas.GetTop() возвращает NaN
public static void MoveTo(this Image target, double newX, double newY) {
Vector offset = VisualTreeHelper.GetOffset(target);
var top = offset.Y;
var left = offset.X;
TranslateTransform trans = new TranslateTransform();
target.RenderTransform = trans;
DoubleAnimation anim1 = new DoubleAnimation(0, newY - top, TimeSpan.FromSeconds(10));
DoubleAnimation anim2 = new DoubleAnimation(0, newX - left, TimeSpan.FromSeconds(10));
trans.BeginAnimation(TranslateTransform.YProperty, anim1);
trans.BeginAnimation(TranslateTransform.XProperty, anim2);
}
Мне пришлось поменять два значения (FROM) на 0. Я предполагаю, что это должно быть потому, что в этом контексте верхний левый угол изображения является источником? Но теперь это работает.