Condividi tramite


RotateTransform Classe

Definizione

Ruota un oggetto intorno a un punto specificato in un sistema di coordinate x-y bidimensionale.

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 .../>
Ereditarietà
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Le trasformazioni possono modificare la visualizzazione del testo nell'applicazione per creare un effetto decorativo. In questo esempio viene visualizzato il testo ruotato a 90 gradi usando un oggetto RotateTransform.

In questo esempio viene usato un oggetto RotateTransform per ruotare il testo. Un valore Angolo di 90 ruota l'elemento 90 gradi in senso orario.

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

Commenti

Un oggetto RotateTransform viene definito da un oggetto Angle che ruota un oggetto attraverso un arco intorno al punto CenterX, CenterY.

Se il valore Angolo applicato è positivo, la rotazione applicata si trova nella direzione in senso orario. È legale usare un valore Angle negativo, che causa la rotazione in senso antiorario. Per i valori inferiori a -360 o maggiore di 360, i valori vengono trattati come se l'operazione mod(360) matematica fosse applicata.

Per ruotare sul posto, lasciare CenterX, CenterY come impostazione predefinita (0,0). È possibile usare un CenterX non definito, CenterY se non si vuole ruotare sul posto e si vuole invece ruotare intorno a un punto nel frame di riferimento della trasformazione. Ad esempio, è possibile simulare un'orbita.

Una trasformazione viene in genere usata per riempire la proprietà UIElement.RenderTransform , per modificare il rendering di un elemento. UIElement ha anche la proprietà UIElement.RenderTransformOrigin , che per impostazione predefinita viene impostata su (0,0). RenderTransformOrigin stabilisce il frame di coordinate di riferimento per la modalità di applicazione di tutte le trasformazioni, tra cui RuotaTransform. Uno scenario comune per RotateTransform consiste nel ruotare un oggetto al suo centro (come animazione o come trasformazione una sola volta). Con l'interfaccia utente predefinita UIElement.RenderTransformOrigin di (0,0) un oggetto non ruota intorno al suo centro, ruota attorno all'angolo superiore sinistro del rettangolo di selezione. Pertanto, il modo comune per causare la rotazione di un oggetto intorno al suo centro consiste nel lasciare CenterX, CenterY come (0,0) ma impostare UIElement.RenderTransformOrigin come punto logico in cui i valori sono (0,5,0,5). Usando la convenzione del punto logico, che inserisce uiElement.RenderTransformOrigin al punto centrale dell'oggetto, in altre parole in corrispondenza di un'origine in cui (x,y) sono esattamente la metà dei valori ActualHeight e ActualWidth.

UIElement.RenderTransformOrigin usa la convenzione del punto logico; CenterX e CenterY non usano tale convenzione, usano valori pixel effettivi.

La posizione di rendering per un oggetto può essere offset in un canvas usando Canvas.Left e Canvas.Top, ma non viene conteggiato come trasformazione; l'oggetto mantiene la propria origine locale (0,0) quando viene posizionata in un canvas.

Esistono altre proprietà e relazioni che possono influire sul modo in cui viene visualizzata la rotazione. Se sono presenti più trasformazioni applicate usando un TransformGroup, l'ordine è importante. Le trasformazioni vengono applicate nell'ordine in cui vengono visualizzate in TransformCollection. Soprattutto se una delle trasformazioni è un TranslateTransform, potrebbe essere necessario modificare l'ordine per ottenere l'effetto di rotazione desiderato.

Esistono tre modi per applicare più trasformazioni allo stesso oggetto:

  • Usando un TransformGroup, in cui è possibile specificare l'ordine applicato a ogni trasformazione.
  • Usando un oggetto CompositeTransform, in cui ognuna delle trasformazioni è abilitata dalle proprietà di un oggetto Transform condiviso e le trasformazioni vengono applicate in un ordine predefinito e noto.
  • Usando MatrixTransform, in cui si impostano le varie proprietà che controllano la matrice 3×3 in modo da combinare le classificazioni tipiche delle trasformazioni in una trasformazione. A meno che non si usi uno strumento di progettazione per impostare i valori, questa è probabilmente la tecnica più avanzata.

Animazione di un oggetto RotateTransform

È possibile applicare un'animazione a un oggetto RotateTransform per causare la rotazione di un elemento nel tempo. In genere si applica solo l'animazione alla proprietà Angle e non si anima CenterX, CenterY. Per un'animazione di rotazione continua, in genere si userà solo il valore To per un'animazione di stile From/To/By . L'angolo è un doppio, quindi questo comporta un DoubleAnimation. Per un'animazione continua si imposta l'oggetto RepeatBehavior di DoubleAnimation su 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();
}

Costruttori

RotateTransform()

Inizializza una nuova istanza della classe RotateTransform .

Proprietà

Angle

Ottiene o imposta l'angolo di rotazione in senso orario espresso in gradi.

AngleProperty

Identifica la proprietà di dipendenza Angle .

CenterX

Ottiene o imposta la coordinata x del punto di rotazione per questa trasformazione.

CenterXProperty

Identifica la proprietà di dipendenza CenterX .

CenterY

Ottiene o imposta la coordinata y del punto di rotazione per questa trasformazione.

CenterYProperty

Identifica la proprietà di dipendenza CenterY .

Dispatcher

Ottiene CoreDispatcher associato a questo oggetto. CoreDispatcher rappresenta una struttura che può accedere a DependencyObject nel thread dell'interfaccia utente anche se il codice viene avviato da un thread non interfaccia utente.

(Ereditato da DependencyObject)
Inverse

Ottiene la trasformazione inversa di questo oggetto GeneralTransform, se possibile.

(Ereditato da GeneralTransform)
InverseCore

Implementa il comportamento per il valore restituito di Inverse in una derivata o personalizzata GeneralTransform.

(Ereditato da GeneralTransform)

Metodi

ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà di dipendenza.

(Ereditato da DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Restituisce qualsiasi valore di base stabilito per una proprietà di dipendenza, che si applica nei casi in cui un'animazione non è attiva.

(Ereditato da DependencyObject)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza da un oggetto DependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se viene impostato un valore locale.

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche a un'istanza di DependencyObject specifica.

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza in un oggetto DependencyObject.

(Ereditato da DependencyObject)
TransformBounds(Rect)

Trasforma il riquadro delimitatore del testo specificato e restituisce un riquadro delimitatore del testo allineato all'asse sufficientemente grande da contenere l'oggetto trasformato.

(Ereditato da GeneralTransform)
TransformBoundsCore(Rect)

Fornisce i mezzi per eseguire l'override del comportamento TransformBounds in una classe di trasformazione derivata.

(Ereditato da GeneralTransform)
TransformPoint(Point)

Usa la logica dell'oggetto di trasformazione per trasformare il punto specificato e restituisce il risultato.

(Ereditato da GeneralTransform)
TryTransform(Point, Point)

Tenta di trasformare il punto specificato e restituisce un valore che indica se la trasformazione ha avuto o meno esito positivo.

(Ereditato da GeneralTransform)
TryTransformCore(Point, Point)

Fornisce i mezzi per eseguire l'override del comportamento TryTransform in una classe di trasformazione derivata.

(Ereditato da GeneralTransform)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback.

(Ereditato da DependencyObject)

Si applica a

Vedi anche