В качестве демонстрации я пытаюсь использовать DoubleAnimation для свойств ScaleX и ScaleY в ScaleTransform. У меня есть прямоугольник (144х144), который я хочу сделать прямоугольным в течение пяти секунд.
Мой XAML:
<Window x:Class="ScaleTransformTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Grid>
<Rectangle Name="rect1" Width="144" Height="144" Fill="Aqua">
<Rectangle.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1" />
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</Window>
Мой C #:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ScaleTransform scaly = new ScaleTransform(1, 1);
rect1.RenderTransform = scaly;
Duration mytime = new Duration(TimeSpan.FromSeconds(5));
Storyboard sb = new Storyboard();
DoubleAnimation danim1 = new DoubleAnimation(1, 1.5, mytime);
DoubleAnimation danim2 = new DoubleAnimation(1, 0.5, mytime);
sb.Children.Add(danim1);
sb.Children.Add(danim2);
Storyboard.SetTarget(danim1, scaly);
Storyboard.SetTargetProperty(danim1, new PropertyPath(ScaleTransform.ScaleXProperty));
Storyboard.SetTarget(danim2, scaly);
Storyboard.SetTargetProperty(danim2, new PropertyPath(ScaleTransform.ScaleYProperty));
sb.Begin();
}
К сожалению, когда я запускаю эту программу, она ничего не делает. Прямоугольник остается размером 144х144. Если я покончу с анимацией и просто
ScaleTransform scaly = new ScaleTransform(1.5, 0.5);
rect1.RenderTransform = scaly;
он мгновенно растянется, без проблем. В другом месте есть проблема. Какие-либо предложения? Я прочитал обсуждение на http://www.eggheadcafe.com/software/aspnet/29220878/how-to-animate-tofrom-an.aspx, в котором, похоже, кто-то работает с версией чистого XAML, но код там не показан.
РЕДАКТИРОВАТЬ: В Применение анимированного ScaleTransform в проблеме кода кажется, что у кого-то была очень похожая проблема, я в порядке с использованием его метода, который работал, но какого черта этот string thePath = "(0).(1)[0].(2)";
вообще? Что представляют собой эти цифры?