UIElement.RenderTransformOrigin Propriété

Définition

Obtient ou définit le point d’origine de toute transformation de rendu possible déclarée par RenderTransform, par rapport aux limites de l’élément UIElement.

public:
 property Point RenderTransformOrigin { Point get(); void set(Point value); };
Point RenderTransformOrigin();

void RenderTransformOrigin(Point value);
public Point RenderTransformOrigin { get; set; }
var point = uIElement.renderTransformOrigin;
uIElement.renderTransformOrigin = point;
Public Property RenderTransformOrigin As Point
<uiElement RenderTransformOrigin="x,y"/>

Valeur de propriété

Point d’origine de la transformation de rendu. La valeur par défaut est un Point avec la valeur 0,0.

Exemples

Cet exemple XAML montre comment définir RenderTransformOrigin sur l’élément dans le CODE XAML initial. Une animation qui s’exécute sur un CompositeTransform initialement par défaut peut utiliser RenderTransformOrigin pour modifier les transformations d’échelle et de rotation à appliquer au centre des cercles plutôt qu’à l’origine de coordonnées 0,0 par défaut. Cela donne l’impression que le cercle tourne autour de son centre et se réduit en place.

Notes

Pour démarrer l’animation, vous devez la récupérer à partir de Ressources et appeler Begin ; ce code n’est pas affiché.

<Ellipse x:Name="e1" RenderTransformOrigin=".5,.5" Height="100" Width="100" Loaded="e1_Loaded_1">
    <Ellipse.Fill>
        <LinearGradientBrush>
            <GradientStop Color="Red" Offset="0"/>
            <GradientStop Color="Green" Offset="1"/>
        </LinearGradientBrush>
    </Ellipse.Fill>
    <Ellipse.RenderTransform>
        <CompositeTransform />
    </Ellipse.RenderTransform>
    <Ellipse.Resources>
        <Storyboard x:Name="esb1" >
            <DoubleAnimation RepeatBehavior="3x" Duration="0:0:3" From="0" To="360" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" />
            <DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" />
            <DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" />
        </Storyboard>
    </Ellipse.Resources>
</Ellipse>

Remarques

RenderTransformOrigin vous permet de créer ou de modifier l’effet d’une transformation sur un élément particulier sans avoir à modifier les spécificités de la transformation RenderTransform . La valeur Point que vous spécifiez pour RenderTransformOrigin n’est pas basée sur des mesures de pixel réelles. Au lieu de cela, il s’agit d’un point logique, où une valeur de 0,0 fait référence au coin supérieur gauche de la zone de rendu UIElement globale et 1,1 fait référence à la partie inférieure droite. La valeur est ensuite évaluée en coordonnée X,Y en la factorisant dans l’espace de coordonnées actuel de l’élément UIElement.

Pour certaines transformations, l’origine n’a pas d’importance. Par exemple, renderTransformOrigin ne modifie pas le comportement d’un TranslateTransform appliqué à la propriété RenderTransform .

Certains types de transformation ont leurs propres propriétés pour spécifier l’origine de la transformation. Par exemple, RotateTransform a CenterX et CenterY. Lorsque vous travaillez avec un UIElement, les outils de conception visuelle masquent parfois ces autres propriétés afin d’utiliser RenderTransformOrigin uniquement pour toutes les modifications d’origine de transformation et de laisser les origines spécifiques à la transformation comme valeurs par défaut. Les outils peuvent également appliquer tous les effets de transformation à une seule valeur CompositeTransform pour RenderTransform, plutôt que de définir des éléments XAML pour les transformations spécifiques et de créer un TransformGroup. Si vous écrivez votre propre code XAML ou définissez des transformations dans du code, vous pouvez envisager de suivre ces mêmes pratiques afin de toujours utiliser RenderTransformOrigin plutôt que les valeurs d’origine spécifiques à la transformation si vous appliquez des transformations pour RenderTransform, sinon les valeurs seront décalées les unes les autres.

Une technique courante consiste à définir RenderTransformOrigin sur 0.5,0.5, ce qui place l’origine au centre de l’élément. Vous pouvez ensuite appliquer un RotateTransform pour faire pivoter l’élément autour du centre.

La modification de FlowDirection en RightToLeft modifie la signification de la coordonnée X d’un RenderTransformOrigin pour un UIElement ; 0 sera le bord droit.

Certains des mêmes effets visuels que vous pouvez produire avec RenderTransform et RenderTransformOrigin peuvent également être obtenus avec Projection et un PlanProjection. Par exemple, vous pouvez faire pivoter un UIElement autour de son centre en modifiant PlaneProjection.RotationZ.

S’applique à

Voir aussi