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

Esempio

Le trasformazioni possono modificare la visualizzazione del testo nell'applicazione per creare un effetto decorativo. Questo esempio mostra il testo ruotato di 90 gradi usando RotateTransform.

In questo esempio viene utilizzato un oggetto RotateTransform per ruotare il testo. Un valore Angle pari a 90 ruota l'elemento a 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 è definito da un oggetto Angle che ruota un oggetto attraverso un arco intorno al punto CenterX, CenterY.

Se il valore Angle applicato è positivo, la rotazione applicata si trova nella direzione in senso orario. È legale usare un valore Angle negativo, che fa sì che la rotazione sia antiorario. Per i valori minori di -360 o maggiore di 360, i valori vengono incapsulati e vengono considerati come se fosse stata applicata l'operazione mod(360) matematica.

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

Una trasformazione viene in genere utilizzata per riempire la proprietà UIElement.RenderTransform per modificare il rendering di un elemento. UIElement ha anche la proprietà UIElement.RenderTransformOrigin , che per impostazione predefinita è (0,0). RenderTransformOrigin stabilisce il frame di coordinate di riferimento per la modalità di applicazione di tutte le trasformazioni, tra cui RotateTransform. Uno scenario comune per RotateTransform consiste nel ruotare un oggetto sul suo centro (come animazione o come trasformazione monouso). Con l'oggetto UIElement.RenderTransformOrigin predefinito di (0,0) un oggetto non ruota attorno al centro, ruota attorno all'angolo superiore sinistro del riquadro. Pertanto, il modo comune per fare in modo che un oggetto ruota intorno al centro sia 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 un'origine in cui (x,y) sono esattamente la metà dei valori ActualHeight eActualWidth.

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

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

Esistono altre proprietà e relazioni che possono influire sulla modalità di visualizzazione della rotazione. Se sono presenti più trasformazioni applicate usando un oggetto TransformGroup, l'ordine è importante. Le trasformazioni vengono applicate nell'ordine in cui vengono visualizzate in TransformCollection. In particolare se una delle trasformazioni è 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 transformGroup, in cui è possibile specificare l'ordine di applicazione di 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 noto fisso.
  • 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 un'unica 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

Puoi applicare un'animazione a rotateTransform per far ruotare un elemento nel tempo. In genere si applica l'animazione solo alla proprietà Angle e non si anima CenterX, CenterY. Per un'animazione a rotazione continua, in genere si usa solo il valore A per un'animazione di stile From/To/By . L'angolo è un oggetto Double , quindi questo comporta un DoubleAnimation. Per un'animazione continua, impostare 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 centrale di rotazione per questa trasformazione.

CenterXProperty

Identifica la proprietà di dipendenza CenterX .

CenterY

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

CenterYProperty

Identifica la proprietà di dipendenza CenterY .

Dispatcher

Restituisce null sempre in un'app SDK per app di Windows. Usare invece DispatcherQueue .

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto a cui è associato l'oggetto DispatcherQueue . DispatcherQueue Rappresenta una funzionalità che può accedere a nel thread dell'interfaccia DependencyObject utente anche se il codice viene avviato da un thread non dell'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 un oggetto GeneralTransform derivato o personalizzato.

(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 dependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

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

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche apportate a una dipendenza specifica in questa istanza di DependencyObject .

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza su 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 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