Wie kann ich Sie animieren die UserControl-Objekte mithilfe von Storyboard und DoubleAnimation?
In meiner WPF-Anwendung, ich habe ein Canvas-Objekt, das enthält einige UserControl-Objekte.
Möchte ich animieren Sie die UserControl-Objekte im Canvas-Bereich mithilfe der DoubleAnimation
so dass Sie gehen von den rechten der Leinwand auf der linken Seite der Leinwand. Dies ist, wie ich es bisher gemacht (wenn man die UserControl-Objekte in die Funktion):
private void Animate(FrameworkElement e)
{
DoubleAnimation ani = new DoubleAnimation()
{
From = _container.ActualWidth,
To = 0.0,
Duration = new Duration(new TimeSpan(0, 0, 10),
TargetElement = e
};
TranslateTransform trans = new TranslateTransform();
e.RenderTransform = trans;
trans.BeginAnimation(TranslateTransform.XProperty, ani, HandoffBehavior.Compose);
}
Jedoch, das mir nicht erlaubt, zu pausieren die animation, also ich habe gedacht, dass mithilfe eines Storyboards statt dies zu tun, aber ich bin mir nicht sicher, wie Sie diese umsetzen. Dies war mein Versuch bisher:
private void Animate(FrameworkElement e)
{
DoubleAnimation ani = new DoubleAnimation()
{
From = _container.ActualWidth,
To = 0.0,
Duration = new Duration(new TimeSpan(0, 0, 10),
TargetElement = e
};
Storyboard stb = new Storyboard();
Storyboard.SetTarget(ani, e);
Storyboard.SetTargetProperty(ani, "Left");
stb.Children.Add(ani);
stb.Begin();
}
Natürlich, dies nicht als UserControl nicht Left
Eigenschaft. Wie kann ich erreichen, was ich mir nach dem?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neo,
Ich glaube, ich habe dein problem gelöst. Hier ist was ich getan habe:
Erstellte ich ein raster mit Zeilen in es. In der ersten Zeile, habe ich einen stack panel ausrichten, mein start, pause, resume-buttons. In der zweiten Reihe, legte ich ein Rechteck (mein Objekt, das Sie animieren). Ich habe dann verdrahtet einige Auslöser für das starten, anhalten und fortsetzen der Schaltflächen zum starten, anhalten und fortsetzen der animation. Hier ist der code, den ich verwendet habe:
Hier ist meine Ausgabe:
Ausgabe http://img34.imageshack.us/img34/5619/1789718.jpg
Ich habe den code Hinzugefügt, um meine Google Code Projekt zum download. Ich habe auch die Zip-Datei der source-code, und es ist unter der folgenden Adresse verfügbar:
http://stackoverflow-answers-by-scott.googlecode.com/files/1789718.zip
Auch hier ist eine sehr gute Referenz für WPF-Animationen:
http://dotnetslackers.com/articles/wpf/IntroductionToWPFAnimations.aspx
Ich hoffe, das hilft,
Dank!
Nur, um diese Frage aktualisiert, ich habe schließlich das problem gelöst. Die
DoubleAnimation
undStoryboard
wurden erstellt undStoryboard.Begin()
aufgerufen, in einem DispatcherTimer-Tick-event-handler.Der trick war zur Versendung der Aufruf eines Delegaten aufgerufen
Storyboard.Begin()
.