How to: Apply Multiple Transforms to an Object

This example shows how to use a TransformGroup to group two or more Transform objects into a single composite Transform.

Example

The following example uses a TransformGroup to apply a ScaleTransform and a RotateTransform to a Button.

<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
  <StackPanel Margin="50">

      <Button 
        RenderTransformOrigin="0.5,0.5"
        HorizontalAlignment="Center">Click
        <Button.RenderTransform>

          <!-- TransformGroup enables you to apply multiple transforms. In 
               this example, the button is scaled and rotated. -->
          <TransformGroup>

            <!-- Triple the size (scale) of the button in the Y direction. -->
            <ScaleTransform ScaleY="3" />

            <!-- Rotate the button by 45 degrees. -->
            <RotateTransform Angle="45" />
            
          </TransformGroup>
        </Button.RenderTransform>
      </Button>
    
  </StackPanel>
</Page>
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace SDKSample
{
    public partial class MultipleTransformsExample : Page
    {
        public MultipleTransformsExample()
        {
            // Create a Button that will have two transforms applied to it.
            Button myButton = new Button();
            myButton.Content = "Click";

            // Set the center point of the transforms.
            myButton.RenderTransformOrigin = new Point(0.5,0.5);

            // Create a transform to scale the size of the button.
            ScaleTransform myScaleTransform = new ScaleTransform();

            // Set the transform to triple the scale in the Y direction.
            myScaleTransform.ScaleY = 3;

            // Create a transform to rotate the button
            RotateTransform myRotateTransform = new RotateTransform();

            // Set the rotation of the transform to 45 degrees.
            myRotateTransform.Angle = 45;

            // Create a TransformGroup to contain the transforms
            // and add the transforms to it.
            TransformGroup myTransformGroup = new TransformGroup();
            myTransformGroup.Children.Add(myScaleTransform);
            myTransformGroup.Children.Add(myRotateTransform);

            // Associate the transforms to the button.
            myButton.RenderTransform = myTransformGroup;

            // Create a StackPanel which will contain the Button.
            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Margin = new Thickness(50);
            myStackPanel.Children.Add(myButton);
            this.Content = myStackPanel;
        }
    }
}

Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media

Namespace SDKSample
    Partial Public Class MultipleTransformsExample
        Inherits Page
        Public Sub New()
            ' Create a Button that will have two transforms applied to it.
            Dim myButton As New Button()
            myButton.Content = "Click"

            ' Set the center point of the transforms.
            myButton.RenderTransformOrigin = New Point(0.5,0.5)

            ' Create a transform to scale the size of the button.
            Dim myScaleTransform As New ScaleTransform()

            ' Set the transform to triple the scale in the Y direction.
            myScaleTransform.ScaleY = 3

            ' Create a transform to rotate the button
            Dim myRotateTransform As New RotateTransform()

            ' Set the rotation of the transform to 45 degrees.
            myRotateTransform.Angle = 45

            ' Create a TransformGroup to contain the transforms
            ' and add the transforms to it.
            Dim myTransformGroup As New TransformGroup()
            myTransformGroup.Children.Add(myScaleTransform)
            myTransformGroup.Children.Add(myRotateTransform)

            ' Associate the transforms to the button.
            myButton.RenderTransform = myTransformGroup

            ' Create a StackPanel which will contain the Button.
            Dim myStackPanel As New StackPanel()
            myStackPanel.Margin = New Thickness(50)
            myStackPanel.Children.Add(myButton)
            Me.Content = myStackPanel

        End Sub
    End Class
End Namespace

See also