Czy ktoś wie o łatwym sposobie animowania ruchu z bieżącej lokalizacji obrazu do nowej lokalizacji (X, Y) przy użyciu animacji WPF bez XAML, programowo 100%? I bez odniesienia do "this" (z RegisterName itp.).WPF. Najłatwiejszy sposób programowego przeniesienia obrazu do (X, Y)?
Próbuję utworzyć klasę rozszerzenia dla obrazu, aby robić na nim animacje. Łatwo jest zmienić właściwości szerokości i wysokości za pomocą animacji, ale po wyszukaniu animacji położenia obiektu staje się on nagle bardziej zaawansowany.
Ponieważ jest to klasa rozszerzenia, odwołuję się tylko do rzeczywistego obiektu Image oraz do X i Y, do których chcę go przenieść.
public static void MoveTo(this Image targetControl, double X, double Y, double Width, double Height){
//code here
...
}
Aktualizacja:
Dzięki. Prawie działa. Wygląda na to, że GetTop i GetLeft nie zwracają wyraźnie "NaN". Znaleziono obejście w tym poście: 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);
}
musiałem zamienić dwie wartości (Z) 0. Zakładam, że musi być, ponieważ w tym kontekście, że lewy górny róg obrazu jest pochodzenie? Ale teraz działa.
Dzięki za aktualizację. Miło było zobaczyć przykład użycia Vectora. –