Freigeben über


UIElement.RenderTransformOrigin Eigenschaft

Definition

Ruft den Mittelpunkt einer möglichen Rendertransformation ab, die von RenderTransform in Bezug zu den Grenzen des Elements deklariert ist, bzw. legt diesen fest. Hierbei handelt es sich um eine Abhängigkeitseigenschaft.

public:
 property System::Windows::Point RenderTransformOrigin { System::Windows::Point get(); void set(System::Windows::Point value); };
public System.Windows.Point RenderTransformOrigin { get; set; }
member this.RenderTransformOrigin : System.Windows.Point with get, set
Public Property RenderTransformOrigin As Point

Eigenschaftswert

Der Wert, der die Rendertransformation deklariert. Der Standardwert ist ein Point mit den Koordinaten (0,0).

Beispiele

Im folgenden Beispiel werden Elemente im Code erstellt, ein RenderTransformOriginangewendet und dann ein RenderTransformangewendet.

public RotateAboutCenterExample()
{
    this.WindowTitle = "Rotate About Center Example";
    NameScope.SetNameScope(this, new NameScope());
    StackPanel myStackPanel = new StackPanel();
    myStackPanel.Margin = new Thickness(50);

    Button myButton = new Button();
    myButton.Name = "myRenderTransformButton";
    this.RegisterName(myButton.Name,myButton);
    myButton.RenderTransformOrigin = new Point(0.5,0.5);
    myButton.HorizontalAlignment = HorizontalAlignment.Left;
    myButton.Content = "Hello World";

    RotateTransform myRotateTransform = new RotateTransform(0);
    myButton.RenderTransform = myRotateTransform;
    this.RegisterName("MyAnimatedTransform",myRotateTransform);

    myStackPanel.Children.Add(myButton);

    //
    // Creates an animation that accelerates through 40% of its duration and
    //      decelerates through the 60% of its duration.
    //
    DoubleAnimation myRotateAboutCenterAnimation = new DoubleAnimation();
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform");
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,new PropertyPath(RotateTransform.AngleProperty));
    myRotateAboutCenterAnimation.From = 0.0;
    myRotateAboutCenterAnimation.To = 360;
    myRotateAboutCenterAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));

    // Create a Storyboard to contain the animations and
    // add the animations to the Storyboard.
    Storyboard myStoryboard = new Storyboard();
    myStoryboard.Children.Add(myRotateAboutCenterAnimation);

    // Create an EventTrigger and a BeginStoryboard action to
    // start the storyboard.
    EventTrigger myEventTrigger = new EventTrigger();
    myEventTrigger.RoutedEvent = Button.ClickEvent;
    myEventTrigger.SourceName = myButton.Name;
    BeginStoryboard myBeginStoryboard = new BeginStoryboard();
    myBeginStoryboard.Storyboard = myStoryboard;
    myEventTrigger.Actions.Add(myBeginStoryboard);
    myStackPanel.Triggers.Add(myEventTrigger);

    this.Content = myStackPanel;
}
Public Sub New()
    Me.WindowTitle = "Rotate About Center Example"
    NameScope.SetNameScope(Me, New NameScope())
    Dim myStackPanel As New StackPanel()
    myStackPanel.Margin = New Thickness(50)

    Dim myButton As New Button()
    myButton.Name = "myRenderTransformButton"
    Me.RegisterName(myButton.Name,myButton)
    myButton.RenderTransformOrigin = New Point(0.5,0.5)
    myButton.HorizontalAlignment = HorizontalAlignment.Left
    myButton.Content = "Hello World"


    Dim myRotateTransform As New RotateTransform(0)
    myButton.RenderTransform = myRotateTransform
    Me.RegisterName("MyAnimatedTransform",myRotateTransform)

    myStackPanel.Children.Add(myButton)

    '
    ' Creates an animation that accelerates through 40% of its duration and
    '      decelerates through the 60% of its duration.
    '
    Dim myRotateAboutCenterAnimation As New DoubleAnimation()
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform")
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,New PropertyPath(RotateTransform.AngleProperty))
    myRotateAboutCenterAnimation.From = 0.0
    myRotateAboutCenterAnimation.To = 360
    myRotateAboutCenterAnimation.Duration = New Duration(TimeSpan.FromMilliseconds(1000))

    ' Create a Storyboard to contain the animations and
    ' add the animations to the Storyboard.
    Dim myStoryboard As New Storyboard()
    myStoryboard.Children.Add(myRotateAboutCenterAnimation)

    ' Create an EventTrigger and a BeginStoryboard action to
    ' start the storyboard.
    Dim myEventTrigger As New EventTrigger()
    myEventTrigger.RoutedEvent = Button.ClickEvent
    myEventTrigger.SourceName = myButton.Name
    Dim myBeginStoryboard As New BeginStoryboard()
    myBeginStoryboard.Storyboard = myStoryboard
    myEventTrigger.Actions.Add(myBeginStoryboard)
    myStackPanel.Triggers.Add(myEventTrigger)

    Me.Content = myStackPanel
End Sub

Hinweise

RenderTransformOrigin weist eine etwas nicht standardmäßige Verwendung des Point Strukturwerts auf, da der Point keine absolute Position in einem Koordinatensystem darstellt. Stattdessen werden Werte zwischen 0 und 1 als Faktor für den Bereich des aktuellen Elements auf jeder x,y-Achse interpretiert. Beispielsweise führt (0.5,0.5) dazu, dass die Rendertransformation auf das Element zentriert wird, oder (1,1) würde die Rendertransformation in der unteren rechten Ecke des Elements platzieren. NaN ist kein akzeptierter Wert.

Werte über 0 und 1 werden ebenfalls akzeptiert und führen zu unkonventionelleren Transformationseffekten. Wenn Sie für instance auf (5,5) festlegen RenderTransformOrigin und dann einen RotateTransformanwenden, befindet sich der Drehpunkt deutlich außerhalb der Grenzen des Elements selbst. Die Transformation dreht Ihr Element in einem großen Kreis, der nach rechts unten entsteht. Der Ursprung kann sich irgendwo innerhalb des übergeordneten Elements befinden und möglicherweise außerhalb des Rahmens oder der Ansicht sein. Negative Punktwerte sind ähnlich, diese gehen über die oberen linken Grenzen hinaus.

Rendertransformationen wirken sich nicht auf das Layout aus und werden in der Regel zum Animieren oder Anwenden eines temporären Effekts auf ein Element verwendet.

Verwendung von XAML-Attributen

<object RenderTransformOrigin="xOrigin, yOrigin"/>  

Verwendung von XAML-Eigenschaftenelementen

<object>  
  <object.RenderTransformOrigin>  
    <Point X=" xOrigin " Y=" yOrigin "/>  
  </object.RenderTransformOrigin>  
</object>  

XAML-Werte

xOrigin
Der horizontale Ursprungsfaktor. Dies wird in der Regel als Wert zwischen 0 und 1 angegeben. Siehe Hinweise.

yOrigin
Der vertikale Ursprungsfaktor. Dies wird in der Regel als Wert zwischen 0 und 1 angegeben. Siehe Hinweise.

Informationen zur Abhängigkeitseigenschaft

Bezeichnerfeld RenderTransformOriginProperty
Metadateneigenschaften auf true festgelegt Keine

Gilt für:

Weitere Informationen