Est-ce que quelqu'un connaît un moyen facile d'animer un mouvement de l'emplacement actuel d'une image à un nouvel emplacement (X, Y) en utilisant l'animation WPF sans XAML, 100% par programmation? Et sans référence à "this" (avec RegisterName etc). J'essaye de faire une classe d'extension pour qu'Image fasse des choses d'animation dessus. Il est assez facile de modifier les propriétés width et height à l'aide d'une animation, mais après avoir recherché l'animation d'un objet, il devient soudainement plus avancé. Comme il s'agit d'une classe d'extension, je n'aurai qu'une référence à l'objet Image réel et le X et Y que je veux le déplacer vers.WPF. Le moyen le plus simple de déplacer l'image vers (X, Y) par programmation?
public static void MoveTo(this Image targetControl, double X, double Y, double Width, double Height){
//code here
...
}
Mise à jour:
Merci. Presque travailler. Il semble que GetTop et GetLeft retournent «NaN» non défini explicitement. Trouvé la solution dans ce post: 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);
}
je devais échanger deux des valeurs (de) avec 0. Je suppose que cela doit être parce que, dans ce contexte, le coin supérieur gauche de l'image est l'origine? Mais maintenant ça marche.
Merci pour la mise à jour. C'était agréable de voir un exemple de comment utiliser un vecteur. –