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, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class RotateTransform final : Transform
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class RotateTransform : Transform
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class RotateTransform : Transform
Public NotInheritable Class RotateTransform
Inherits Transform
<RotateTransform .../>
Herencia
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

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 el 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, el giro aplicado se encuentra en la dirección en sentido 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.

Normalmente, se usa una transformación 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 coordenadas 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 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 del cuadro de límite. Por lo tanto, la forma 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 aplica cada transformación.
  • Mediante 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 sea 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ía 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

Obtiene el CoreDispatcher al que está asociado este objeto. CoreDispatcher representa una instalación que puede acceder a DependencyObject en el subproceso de la 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 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 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 mediante una llamada a RegisterPropertyChangedCallback.

(Heredado de DependencyObject)

Se aplica a

Consulte también