Анимация ячеек сетки - PullRequest
0 голосов
/ 14 августа 2011

Я хочу сделать анимацию, где один объект будет перемещаться из одной ячейки сетки в другую. Я пытался вычислить положение объектов, но это не сработало (это дало мне неправильные значения). Вот код, если кому интересно:

Point locationToScreen = (((e.Source as Button).Content as Viewbox).Child as Label).PointToScreen(new Point(0, 0));

PresentationSource source = PresentationSource.FromVisual((((e.Source as Button).Content as Viewbox).Child as Label));
Point pt = source.CompositionTarget.TransformFromDevice.Transform(locationToScreen);

Point a = (letters.Children[_words[_index].Index] as TextBlock).PointToScreen(new Point(0, 0));

PresentationSource sos = PresentationSource.FromVisual((letters.Children[_words[_index].Index] as TextBlock));
Point pt2 = sos.CompositionTarget.TransformFromDevice.Transform(a);

TranslateTransform tt = new TranslateTransform();
(((e.Source as Button).Content as Viewbox).Child as Label).RenderTransform = tt;
DoubleAnimation da1 = new DoubleAnimation(0, -(pt.Y - pt2.Y)/2, new Duration(TimeSpan.FromSeconds(1)));
DoubleAnimation da2 = new DoubleAnimation(0, -(pt.X - pt2.X)/2, new Duration(TimeSpan.FromSeconds(1)));
tt.BeginAnimation(TranslateTransform.YProperty, da1);
tt.BeginAnimation(TranslateTransform.XProperty, da2);

Так как мне это сделать? Есть ли простой способ перемещения объекта из одного контейнера в другой?

1 Ответ

1 голос
/ 15 августа 2011

Если вам не нужен анимированный вид 1000 объектов одновременно, определенно лучше создать элемент пользовательского интерфейса new , который появляется поверх элемента Source и перемещается до элемента Destination после завершения анимации.этот элемент исчезает, а свойства элементов Source и Destination изменяются в соответствии с запросом.

Лично я считаю, что проще использовать XAML, мне это кажется более понятным.Вот пример использования: Анимация XAML

Основная идея заключается в том, чтобы объявить анимацию под своим тегом TextBlock и связать ее с некоторым свойством зависимости, изменение которого приведет к запуску анимации внужный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...