UIElement.RenderTransformOrigin Propiedad

Definición

Obtiene o establece el punto central de cualquier posible transformación de representación declarada por RenderTransform, relativa a los límites del elemento. Es una propiedad de dependencia.

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

Valor de propiedad

El valor que declara la transformación de representación. El valor predeterminado es un Point con las coordenadas (0,0).

Ejemplos

En el ejemplo siguiente se compilan elementos en el código, se aplica un RenderTransformOriginy, a continuación, se aplica .RenderTransform

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

Comentarios

RenderTransformOrigin tiene un uso poco estándar del valor de estructura Point , en que no Point representa una ubicación absoluta en un sistema de coordenadas. En su lugar, los valores entre 0 y 1 se interpretan como un factor para el intervalo del elemento actual en cada eje x,y. Por ejemplo, (0,5,0,5) hará que la transformación de representación se centre en el elemento o (1,1) colocaría la transformación de representación en la esquina inferior derecha del elemento. NaN no es un valor aceptado.

Los valores más allá de 0 y 1 también se aceptan y darán lugar a efectos de transformación más poco convencionales. Por ejemplo, si establece RenderTransformOrigin en (5,5) y, a continuación, aplica un RotateTransform, el punto de rotación estará bien fuera de los límites del propio elemento. La transformación girará el elemento alrededor de un círculo grande que se origina más allá de la parte inferior derecha. El origen podría estar en algún lugar dentro de su elemento primario y posiblemente podría estar fuera del marco o la vista. Los valores de punto negativo son similares, que van más allá de los límites superior izquierdo.

Las transformaciones de representación no afectan al diseño y normalmente se usan para animar o aplicar un efecto temporal a un elemento.

Uso de atributos XAML

<object RenderTransformOrigin="xOrigin, yOrigin"/>  

Uso de elementos de propiedad XAML

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

Valores XAML

xOrigin
Factor de origen horizontal. Normalmente se da como un valor entre 0 y 1. Vea la sección Comentarios.

yOrigin
Factor de origen vertical. Normalmente se da como un valor entre 0 y 1. Vea la sección Comentarios.

Información sobre propiedades de dependencia

Campo identificador RenderTransformOriginProperty
Propiedades de metadatos establecidas en true None

Se aplica a

Consulte también