I need to scale an EllipseGeometry in C# with ScaleTransform, but it doesn't works. Here's the code:
XAML:
<Image x:Name="rock" Stretch="None">
<Image.Clip>
<EllipseGeometry x:Name="rockClip" RadiusX="100" RadiusY="100" Center="200,150">
<EllipseGeometry.Transform>
<ScaleTransform/>
</EllipseGeometry.Transform>
</EllipseGeometry>
</Image.Clip>
</Image>
C#:
DoubleAnimation scaleX = new DoubleAnimation();
scaleX.BeginTime = TimeSpan.FromMilliseconds(fromMills);
scaleX.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
scaleX.From = 0.0;
scaleX.To = 1.0;
scaleX.SetValue(Storyboard.TargetProperty, rockClip);
scaleX.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath("(EllipseGeometry.Transform).(ScaleTransform.ScaleX)"));
DoubleAnimation scaleY = new DoubleAnimation();
scaleY.BeginTime = TimeSpan.FromMilliseconds(fromMills);
scaleY.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
scaleY.From = 0.0;
scaleY.To = 1.0;
scaleY.SetValue(Storyboard.TargetProperty, rockClip);
scaleY.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath("(EllipseGeometry.Transform).(ScaleTransform.ScaleY)"));
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(scaleX);
storyboard.Children.Add(scaleY);
storyboard.Completed += storyboard_Completed;
animation.Begin();
The storyboard_Completed event is triggered but there is no animation on the EllipseGeometry.
Where is the problem?
I can animate the EllipseGeometry only in this way:
DoubleAnimation scale = new DoubleAnimation();
scale.From = 0;
scale.To = 40;
scale.Duration = new Duration(TimeSpan.FromMilliseconds(5000));
rockClip.BeginAnimation(EllipseGeometry.RadiusXProperty, scale);
rockClip.BeginAnimation(EllipseGeometry.RadiusYProperty, scale);
I need to put this DoubleAnimation in a Storyboard, but I don't know how.
Thanks.