XAML Animation – How to Scale and Rotate Object (Multiple Transformations)
In this post I want to share snippet which shows simple technique to implement multiple transformations on same object.
You will notice that in order to achieve this I have used TransformationGroup along with StoryBoard and DoubleAnimation
private void Rotate_Click(object sender, RoutedEventArgs e)
{
ScaleAndRotate();
}
private void ScaleAndRotate()
{
var scaleTrn = new ScaleTransform();
var rotateTrn = new RotateTransform();
TransformGroup tg = new TransformGroup();
tg.Children.Add(scaleTrn);
tg.Children.Add(rotateTrn);
Image1.RenderTransform = tg;
Image1.RenderTransformOrigin = new Point(0.5,0.5);
Duration mytime = new Duration(TimeSpan.FromSeconds(5));
Storyboard sb = new Storyboard();
DoubleAnimation danim1 = new DoubleAnimation();
DoubleAnimation danim2 = new DoubleAnimation();
//danim1.From = 1;
danim1.To = -1;
//danim2.From = 0;
danim2.To = -360;
danim1.Duration = mytime;
danim2.Duration = mytime;
sb.Children.Add(danim1);
sb.Children.Add(danim2);
Storyboard.SetTarget(danim1, tg.Children[0]);
Storyboard.SetTargetProperty(danim1, new PropertyPath(ScaleTransform.ScaleXProperty));
//Storyboard.SetTargetProperty(danim1, new PropertyPath("ScaleX"));
Storyboard.SetTarget(danim2, tg.Children[1]);
Storyboard.SetTargetProperty(danim2, new PropertyPath(RotateTransform.AngleProperty));
//Storyboard.SetTargetProperty(danim2, new PropertyPath("Angle"));
sb.Begin();
}




Leave a Reply
You must be logged in to post a comment.