UIElement.RenderTransformOrigin Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el punto de origen de cualquier posible transformación de representación declarada por RenderTransform, en relación con los límites de 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"/>
Valor de propiedad
Punto de origen de la transformación de representación. El valor predeterminado es Un punto con el valor 0,0.
Ejemplos
En este ejemplo xaml se muestra cómo establecer RenderTransformOrigin en el elemento en el XAML inicial. Una animación que se ejecuta en un CompositeTransform inicialmente predeterminado puede usar RenderTransformOrigin para modificar las transformaciones de escala y rotación para aplicarlas al centro de los círculos en lugar del origen de coordenadas predeterminado 0,0. Esto hace que aparezca como si el círculo gira alrededor de su centro y se reduce en su lugar.
Nota:
Para iniciar la animación, tendrías que recuperarla de Resources y llamar a Begin; ese código no se muestra.
<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>
Comentarios
RenderTransformOrigin permite crear o cambiar el efecto de una transformación en un elemento determinado sin tener que modificar los detalles de la transformación RenderTransform . El valor Point que especifique para RenderTransformOrigin no se basa en medidas de píxel reales. En su lugar, es un punto lógico, donde un valor de 0,0 hace referencia a la esquina superior izquierda del área de representación general de UIElement y 1,1 hace referencia a la parte inferior derecha. A continuación, el valor se evalúa en una coordenada X,Y mediante su factorización en el espacio de coordenadas actual de UIElement.
Para algunas transformaciones, el origen no importa. Por ejemplo, RenderTransformOrigin no cambiará el comportamiento de un TranslateTransform aplicado a la propiedad RenderTransform .
Algunos tipos de transformación tienen sus propias propiedades para especificar el origen de la transformación. Por ejemplo, RotateTransform tiene CenterX y CenterY. Al trabajar con uiElement, las herramientas de diseño visual a veces ocultan estas otras propiedades para que solo use RenderTransformOrigin para todos los cambios de origen de transformación y deje orígenes específicos de la transformación como valores predeterminados. Las herramientas también pueden aplicar todos los efectos de transformación a un único valor CompositeTransform para RenderTransform, en lugar de definir elementos XAML para las transformaciones específicas y crear un transformGroup. Si estás escribiendo tu propio XAML o definiendo transformaciones en el código, puedes considerar seguir estas mismas prácticas para que siempre uses RenderTransformOrigin en lugar de los valores de origen específicos de la transformación si aplicas transformaciones para RenderTransform, de lo contrario, los valores se desplazarán entre sí.
Una técnica común consiste en establecer RenderTransformOrigin en 0,5,0,5, que coloca el origen en el centro de elementos. Después, podría aplicar rotateTransform para girar el elemento alrededor del centro.
Cambiar FlowDirection a RightToLeft cambia el significado de la coordenada X de un RenderTransformOrigin para un UIElement; 0 será el borde derecho.
Algunos de los mismos efectos visuales que se pueden producir con RenderTransform y RenderTransformOrigin también se pueden lograr con Projection y planeProjection. Por ejemplo, puede girar un UIElement alrededor de su centro cambiando PlaneProjection.RotationZ.