RotateTransform Clase
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í.
Gira un objeto alrededor de un punto especificado en un sistema de coordenadas x-y bidimensional.
public ref class RotateTransform sealed : Transform
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class RotateTransform final : Transform
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class RotateTransform : Transform
Public NotInheritable Class RotateTransform
Inherits Transform
<RotateTransform .../>
- Herencia
- Atributos
Ejemplos
Las transformaciones pueden modificar la presentación del texto en la aplicación para crear un efecto decorativo. En este ejemplo se muestra el texto girado 90 grados mediante rotateTransform.
En este ejemplo se usa rotateTransform para girar texto. Un valor angle de 90 gira el elemento 90 grados en el sentido de las agujas del reloj.
<!-- Rotate the text 90 degrees using a RotateTransform. -->
<TextBlock Text="Rotated Text" FontSize="32" Foreground="Teal">
<TextBlock.RenderTransform>
<RotateTransform Angle="90" />
</TextBlock.RenderTransform>
</TextBlock>
Comentarios
RotateTransform se define mediante un ángulo que gira un objeto a través de un arco alrededor del punto CenterX, CenterY.
Si el valor angle aplicado es positivo, la rotación aplicada se encuentra en la dirección de las agujas del reloj. Es legal usar un valor Angle negativo, lo que hace que la rotación sea en sentido contrario a las agujas del reloj. Para los valores inferiores a –360 o mayores que 360, los valores se ajustan y se tratan como si se aplicara la operación mod(360)
matemática.
Para girar en su lugar, deje CenterX, CenterY como valor predeterminado (0,0). Puede usar un CenterX no predeterminado, CenterY si no desea girar en su lugar y, en su lugar, desea girar alrededor de un punto en el marco de referencia de la transformación. Por ejemplo, puede simular una órbita.
Una transformación se usa normalmente para rellenar la propiedad UIElement.RenderTransform para cambiar cómo se representa un elemento. UIElement también tiene la propiedad UIElement.RenderTransformOrigin , que tiene como valor predeterminado (0,0). RenderTransformOrigin establece el marco de coordenada de referencia para cómo se aplicarán todas las transformaciones, incluido RotateTransform. Un escenario común para RotateTransform es girar un objeto en su lugar alrededor de su centro (ya sea como una animación o como una transformación única). Con el valor predeterminado UIElement.RenderTransformOrigin de (0,0), un objeto no gira alrededor de su centro, gira alrededor de la esquina superior izquierda de su cuadro de límite. Por lo tanto, la manera común de hacer que un objeto gire alrededor de su centro es dejar CenterX, CenterY como (0,0), pero establecer UIElement.RenderTransformOrigin como un punto lógico donde los valores son (0,5,0,5). Con la convención de punto lógico, que coloca uiElement.RenderTransformOrigin en el punto central del objeto, es decir, en un origen donde (x,y) son exactamente la mitad de los valores ActualHeight y ActualWidth.
UIElement.RenderTransformOrigin usa la convención de punto lógico; CenterX y CenterY no usan esa convención, usan valores de píxel reales.
La posición de representación de un objeto se puede desplazar en un lienzo mediante Canvas.Left y Canvas.Top, pero esto no cuenta como una transformación; el objeto conserva su propio origen local (0,0) cuando se coloca en un Canvas.
Hay otras propiedades y relaciones que pueden afectar a cómo aparece la rotación. Si hay varias transformaciones aplicadas mediante transformGroup, el orden es importante. Las transformaciones se aplican en el orden en que aparecen en TransformCollection. Especialmente si una de las transformaciones es TranslateTransform, es posible que tenga que modificar el orden para obtener el efecto de rotación que desee.
Hay tres maneras de aplicar varias transformaciones al mismo objeto:
- Con transformGroup, donde puede especificar el orden que se aplica a cada transformación.
- Con compositeTransform, donde cada una de las transformaciones está habilitada por las propiedades de un objeto Transform compartido y las transformaciones se aplican en un orden conocido fijo.
- Con matrixTransform, donde se establecen las distintas propiedades que controlan la matriz 3×3 de forma que se combinan las clasificaciones típicas de las transformaciones en una transformación. A menos que use una herramienta de diseño para ayudar a establecer los valores, probablemente esta es la técnica más avanzada.
Animar un RotateTransform
Puedes aplicar una animación a rotateTransform para hacer que un elemento gire con el tiempo. Normalmente, solo aplicas la animación a la propiedad Angle y no animas CenterX, CenterY. Para una animación giratoria continuamente, normalmente usarías solo el valor To para una animación de estilo From/To/By . Angle es un Double , por lo que esto implica una DoubleAnimation. Para una animación continua, establecería repeatBehavior de DoubleAnimation en Forever.
<Page.Resources>
<Storyboard x:Name="spinrect">
<DoubleAnimation To="360" RepeatBehavior="Forever"
Storyboard.TargetName="spinme"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" />
</Storyboard>
</Page.Resources>
<StackPanel>
<Rectangle Name="spinme" Width="50" Height="50" Fill="Red" RenderTransformOrigin=".5,.5"
PointerPressed="spinme_PointerPressed">
<Rectangle.RenderTransform>
<RotateTransform/>
</Rectangle.RenderTransform>
</Rectangle>
</StackPanel>
private void spinme_PointerPressed(object sender, PointerRoutedEventArgs e)
{
spinrect.Begin();
}
Constructores
RotateTransform() |
Inicializa una nueva instancia de la clase RotateTransform . |
Propiedades
Angle |
Obtiene o establece el ángulo, en grados, de rotación en el sentido de las agujas del reloj. |
AngleProperty |
Identifica la propiedad de dependencia Angle . |
CenterX |
Obtiene o establece la coordenada x del punto central de rotación para esta transformación. |
CenterXProperty |
Identifica la propiedad de dependencia CenterX . |
CenterY |
Obtiene o establece la coordenada y del punto central de rotación para esta transformación. |
CenterYProperty |
Identifica la propiedad de dependencia CenterY . |
Dispatcher |
Siempre devuelve |
DispatcherQueue |
Obtiene el objeto |
Inverse |
Obtiene la transformación inversa de este Objeto GeneralTransform, si es posible. (Heredado de GeneralTransform) |
InverseCore |
Implementa el comportamiento para el valor devuelto de Inverso en un GeneralTransform derivado o personalizado. (Heredado de GeneralTransform) |
Métodos
ClearValue(DependencyProperty) |
Borra el valor local de una propiedad de dependencia. (Heredado de DependencyObject) |
GetAnimationBaseValue(DependencyProperty) |
Devuelve cualquier valor base establecido para una propiedad de dependencia, que se aplicaría en los casos en los que una animación no está activa. (Heredado de DependencyObject) |
GetValue(DependencyProperty) |
Devuelve el valor efectivo actual de una propiedad de dependencia de dependencyObject. (Heredado de DependencyObject) |
ReadLocalValue(DependencyProperty) |
Devuelve el valor local de una propiedad de dependencia, si se establece un valor local. (Heredado de DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Registra una función de notificación para escuchar los cambios en una dependencyProperty específica en esta instancia de DependencyObject . (Heredado de DependencyObject) |
SetValue(DependencyProperty, Object) |
Establece el valor local de una propiedad de dependencia en dependencyObject. (Heredado de DependencyObject) |
TransformBounds(Rect) |
Transforma el cuadro de límite especificado y devuelve un cuadro de límite alineado con el eje que es suficientemente grande como para contener la estructura. (Heredado de GeneralTransform) |
TransformBoundsCore(Rect) |
Proporciona los medios para invalidar el comportamiento de TransformBounds en una clase de transformación derivada. (Heredado de GeneralTransform) |
TransformPoint(Point) |
Usa la lógica de este objeto de transformación para transformar el punto especificado y devuelve el resultado. (Heredado de GeneralTransform) |
TryTransform(Point, Point) |
Intenta transformar el punto especificado y devuelve un valor que indica si la transformación se realizó correctamente. (Heredado de GeneralTransform) |
TryTransformCore(Point, Point) |
Proporciona los medios para invalidar el comportamiento TryTransform en una clase de transformación derivada. (Heredado de GeneralTransform) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Cancela una notificación de cambio registrada anteriormente llamando a RegisterPropertyChangedCallback. (Heredado de DependencyObject) |