Comment : appliquer plusieurs transformations à un objet

Cet exemple montre comment utiliser un TransformGroup pour regrouper deux ou plusieurs objets Transform en une seule Transform composite.

Exemple

L'exemple suivant utilise un TransformGroup pour appliquer un ScaleTransform et un RotateTransform à un Button.

<Page 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://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>

Imports System
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
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;

        }
    }
}

Voir aussi

Référence

RenderTransform

TransformGroup

Concepts

Vue d'ensemble des transformations

Autres ressources

Transformations 2D, exemple (page éventuellement en anglais)