Partilhar via


RotateTransform Classe

Definição

Gira um objeto em torno de um ponto especificado em um 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 .../>
Herança
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
Atributos

Exemplos

As transformações podem alterar a exibição de texto em seu aplicativo para criar um efeito decorativo. Este exemplo mostra o texto girado 90 graus usando um RotateTransform.

Este exemplo usa um RotateTransform para girar o texto. Um valor Angle de 90 gira o elemento 90 graus no sentido horário.

<!-- Rotate the text 90 degrees using a RotateTransform. -->
<TextBlock Text="Rotated Text" FontSize="32" Foreground="Teal">
  <TextBlock.RenderTransform>
    <RotateTransform Angle="90" />
  </TextBlock.RenderTransform>
</TextBlock>

Comentários

Um RotateTransform é definido por um Angle que gira um objeto através de um arco ao redor do ponto CenterX, CenterY.

Se o valor Angle aplicado for positivo, a rotação aplicada estará na direção no sentido horário. É legal usar um valor Angle negativo, o que faz com que a rotação seja no sentido anti-horário. Para valores menores que –360 ou maiores que 360, os valores encapsulam e são tratados como se a operação mod(360) matemática fosse aplicada.

Para girar no local, deixe CenterX, CenterY como o padrão (0,0). Você pode usar um CenterX não padrão, CenterY se não quiser girar no local e, em vez disso, desejar girar em torno de um ponto no quadro de referência da transformação. Por exemplo, você pode simular uma órbita.

Uma Transformação normalmente é usada para preencher a propriedade UIElement.RenderTransform para alterar a forma como um elemento é renderizado. UIElement também tem a propriedade UIElement.RenderTransformOrigin , que usa como padrão (0,0). RenderTransformOrigin estabelece o quadro de coordenadas de referência de como todas as transformações, incluindo RotateTransform, serão aplicadas. Um cenário comum para RotateTransform é girar um objeto no local em torno de seu centro (como uma animação ou como uma transformação única). Com o UIElement.RenderTransformOrigin padrão de (0,0) um objeto não gira em torno de seu centro, ele gira em torno do canto superior esquerdo de sua caixa delimitadora. Portanto, a maneira comum de fazer com que um objeto gire em torno de seu centro é deixar CenterX, CenterY como (0,0), mas definir UIElement.RenderTransformOrigin como um Ponto lógico em que os valores estão (0,5,0,5). Usando a convenção de ponto lógico, que coloca o UIElement.RenderTransformOrigin no ponto central do objeto, em outras palavras, em uma origem em que (x,y) são exatamente metade dos valores ActualHeight e ActualWidth.

UIElement.RenderTransformOrigin usa a convenção de ponto lógico; O CenterX e o CenterY não usam essa convenção, eles usam valores reais de pixel.

A posição de renderização de um objeto pode ser deslocada em um Canvas usando Canvas.Left e Canvas.Top, mas isso não conta como uma transformação; o objeto mantém sua própria origem local (0,0) quando está posicionado em um Canvas.

Há outras propriedades e relações que podem afetar a forma como a rotação é exibida. Se houver várias transformações aplicadas usando um TransformGroup, a ordem será importante. As transformações são aplicadas na ordem em que aparecem no TransformCollection. Especialmente se uma das transformações for translateTransform, talvez seja necessário alterar a ordem para obter o efeito de rotação desejado.

Há três maneiras de aplicar várias transformações ao mesmo objeto:

  • Usando um TransformGroup, em que você pode especificar a ordem em que cada transformação se aplica.
  • Usando um CompositeTransform, em que cada uma das transformações é habilitada por propriedades de um objeto Transform compartilhado e as transformações são aplicadas em uma ordem fixa e conhecida.
  • Usando uma MatrixTransform, em que você define as várias propriedades que controlam a matriz 3×3 de forma que você esteja combinando as classificações típicas de transformações em uma única Transformação. A menos que você esteja usando uma ferramenta de design para ajudar a definir os valores, essa é provavelmente a técnica mais avançada.

Animando um RotateTransform

Você pode aplicar uma animação a um RotateTransform para fazer com que um elemento gire ao longo do tempo. Normalmente, você aplica apenas a animação à propriedade Angle e não anima CenterX, CenterY. Para uma animação de rotação contínua, normalmente você usaria apenas o valor Para para uma animação de estilo De/Para/Por . Angle é um Double , portanto, isso envolve um DoubleAnimation. Para uma animação contínua, você definiria RepeatBehavior da DoubleAnimation como 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();
}

Construtores

RotateTransform()

Inicializa uma nova instância da classe RotateTransform .

Propriedades

Angle

Obtém ou define o ângulo, em graus, da rotação no sentido horário.

AngleProperty

Identifica a propriedade de dependência Angle .

CenterX

Obtém ou define a coordenada x do ponto central de rotação para essa transformação.

CenterXProperty

Identifica a propriedade de dependência CenterX .

CenterY

Obtém ou define a coordenada y do ponto central de rotação para essa transformação.

CenterYProperty

Identifica a propriedade de dependência CenterY .

Dispatcher

Sempre retorna null em um aplicativo SDK do Aplicativo Windows. Em vez disso, use DispatcherQueue .

(Herdado de DependencyObject)
DispatcherQueue

Obtém o ao DispatcherQueue qual este objeto está associado. O DispatcherQueue representa uma instalação que pode acessar o DependencyObject no thread da interface do usuário, mesmo que o código seja iniciado por um thread que não seja da interface do usuário.

(Herdado de DependencyObject)
Inverse

Obtém a transformação inversa desse GeneralTransform, se possível.

(Herdado de GeneralTransform)
InverseCore

Implementa o comportamento para o valor retornado do Inverso em um GeneralTransform derivado ou personalizado.

(Herdado de GeneralTransform)

Métodos

ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade de dependência.

(Herdado de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retorna qualquer valor base estabelecido para uma propriedade de dependência, que se aplicaria nos casos em que uma animação não está ativa.

(Herdado de DependencyObject)
GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência de um DependencyObject.

(Herdado de DependencyObject)
ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, se um valor local for definido.

(Herdado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra uma função de notificação para escutar alterações em uma DependencyProperty específica nessa instância dependencyObject .

(Herdado de DependencyObject)
SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência em um DependencyObject.

(Herdado de DependencyObject)
TransformBounds(Rect)

Transforma a caixa delimitadora especificada e retorna uma caixa delimitadora alinhada por eixo exatamente grande o suficiente para contê-la.

(Herdado de GeneralTransform)
TransformBoundsCore(Rect)

Fornece os meios para substituir o comportamento TransformBounds em uma classe de transformação derivada.

(Herdado de GeneralTransform)
TransformPoint(Point)

Usa a lógica desse objeto de transformação para transformar o ponto especificado e retorna o resultado.

(Herdado de GeneralTransform)
TryTransform(Point, Point)

Tenta transformar o ponto especificado e retorna um valor que indica se a transformação foi bem-sucedida.

(Herdado de GeneralTransform)
TryTransformCore(Point, Point)

Fornece os meios para substituir o comportamento TryTransform em uma classe de transformação derivada.

(Herdado de GeneralTransform)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela uma notificação de alteração que foi registrada anteriormente chamando RegisterPropertyChangedCallback.

(Herdado de DependencyObject)

Aplica-se a

Confira também