Share via


RotateTransform Clase

Definición

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
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
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 null en una aplicación de SDK de Aplicaciones para Windows. Use DispatcherQueue en su lugar.

(Heredado de DependencyObject)
DispatcherQueue

Obtiene el objeto DispatcherQueue al que está asociado este objeto. DispatcherQueue representa una instalación que puede acceder al DependencyObject en el subproceso de interfaz de usuario incluso si un subproceso que no es de interfaz de usuario inicia el código.

(Heredado de DependencyObject)
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)

Se aplica a

Consulte también