RotateTransform Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
DispatcherQueue |
Ottiene l'oggetto a cui è associato l'oggetto |
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) |