¿Alguien sabe de una manera fácil de animar un movimiento desde la ubicación actual de una imagen a una nueva ubicación (X, Y) usando animación WPF sin XAML, 100% mediante programación? Y sin referencia a "esto" (con RegisterName, etc.).WPF. La forma más fácil de mover la imagen a (X, Y) programáticamente?
Estoy tratando de hacer una clase de extensión para que la Imagen haga cosas de animación en ella. Es bastante fácil cambiar las propiedades de ancho y alto a través de la animación, pero luego de buscar la animación de ubicación de un objeto, de repente se vuelve más avanzado.
Como es una clase de extensión, solo tendré una referencia al objeto de imagen real y las X e Y a las que quiero moverlo.
public static void MoveTo(this Image targetControl, double X, double Y, double Width, double Height){
//code here
...
}
Actualización:
Gracias. Casi trabajando. Parece que GetTop y GetLeft devuelven 'NaN' no establecido explícitamente. Encontrado la solución en este mensaje: Canvas.GetTop() returning 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);
}
que tenía que intercambiar dos de los valores (de) con 0. Asumo que debe ser porque en este contexto la esquina superior izquierda de la imagen es el origen? Pero ahora funciona.
Gracias por la actualización. Fue agradable ver un ejemplo de cómo usar un Vector. –