WPF. Einfachste Möglichkeit zum verschieben von Bild (X,Y) programmgesteuert?
Kennt jemand eine einfache Möglichkeit zu animieren, eine Bewegung aus einem Bild der aktuellen Position zu einer neuen Position (X,Y) mit WPF-animation ohne XAML, 100% programmgesteuert? Und ohne Bezug zu "diesem" (mit RegisterName etc).
Ich versuche, eine Erweiterung der Klasse für Bild zu tun, animation Sachen drauf. Es ist leicht genug, um zu ändern der Eigenschaften width und height durch die animation, sondern nach der Suche nach der location-animation von einem Objekt, das es plötzlich mehr erweitert wird.
Als es ist eine Erweiterung der Klasse I wird nur ein Verweis auf das eigentliche Bild-Objekt und die X-und Y-ich möchte um es zu verschieben.
public static void MoveTo(this Image targetControl, double X, double Y, double Width, double Height){
//code here
...
}
Update:
Dank. Fast arbeiten. Es scheint, Die GetTop und GetLeft gibt 'NaN' nicht explizit festgelegt. Finden Sie die Problemumgehung in diesem post: Canvas.GetTop() gibt 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);
}
Musste ich tauschen Sie zwei der Werte (AB) mit 0. Ich gehe davon aus, dass sein muss, weil in diesem Zusammenhang der oberen linken Ecke des Bildes ist der Ursprung? Aber jetzt funktioniert es.
Ihre aktualisierte code funktioniert wirklich schön ! Vielen Dank für Ihre excellence !
InformationsquelleAutor Wolf5 | 2010-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Fast arbeiten. Die left-und top-Eigenschaften werden mussten, bekommen von der VisualTreeHelper.GetOffset(Ziel) statt als GetTop und GetLeft zurückgegeben 'NaN'. Nur ein bug Links. Der start der animation scheint zu beginnen mit der doppelten der aktuellen Lage.
"0" als Wert fest.
bin immer Fehler in der Nähe der moveto-Methode..
Brauch ich fertige code-snippet
InformationsquelleAutor Dean Chalk
Hier ist es... Es ändert sich die Größe und bewegt
MediaElement
unter derCanvas
. Nur Eingabe-Parameter:UPDATE:
Statt
MediaElement
verwenden Sie diese Zeile:Und vergessen Sie nicht, setzen Sie den C# - code:
Können Sie
MediaElement
als gut, aber Sie haben, um zu definieren, eineVideoClip
etwas zu sehen 😉Ja, es funktioniert. Check meine Antwort. Vergessen Sie nicht abstimmen...
Ich habe jetzt ein wenig besser in WPF Animationen in den letzten paar Tagen. Werde es wieder versuchen, wenn ich nach Hause komme.
Ersetzen MediaElement mit einem Rechteck gemacht das rect bewegen, aber es wollte nicht wirken wie ein sprite über den Bildschirm bewegen, sondern es machte eine Vergrößerung (und größeren) Rechteck aufgestellt, in der äußersten rechten unteren Ecke. Nicht gerade die Animationen erwartet man von der Frage ab, ich denke, es ist die hart-kodierten Werten in der C# - code. Ich abgewählt, weil ich weiß, die Beantwortung von Fragen ist nicht einfach, und Sie kümmern sich genug, um zu aktualisieren Sie Ihre Antworten.
Ich mache UI-Steuerelement kleiner mit Ihrem code. Es funktioniert gut, aber wie machen es zurück zu Alter Größe? Ich habe getestet wie .Breite= 111 und .Höhe= 222 aber nicht funktioniert...
InformationsquelleAutor Academy of Programmer
Dieser code basiert auf dem @DeanChalk Antwort.
Bewegt es sich ein
Image
innerhalb einerCanvas
(RFID_Token
) Diagonal von oben rechts nach unten Links, mittig über ein weiteresImage
innerhalb einerCanvas
(RFID_Reader
).InformationsquelleAutor Danny Beckett
Ich hielt mit NaN oder 0-Werte für meine verschachtelten Elementen, hier ist eine modifizierte version des Danny ' s Antwort :
InformationsquelleAutor Akli
Bitte finden Sie eine Lösung, die verwendet die Left und Top Eigenschaften der Leinwand für die extension-Methode. Siehe den folgenden code:
InformationsquelleAutor laserman