Freigeben über


RotateTransform Klasse

Definition

Dreht ein Objekt um einen angegebenen Punkt in einem zweidimensionalen x-y-Koordinatensystem.

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 .../>
Vererbung
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
Attribute

Beispiele

Transformationen können die Anzeige von Text in Ihrer Anwendung ändern, um einen dekorativen Effekt zu erzeugen. In diesem Beispiel wird Text mit rotateTransform um 90 Grad gedreht.

In diesem Beispiel wird ein RotateTransform-Objekt verwendet, um Text zu drehen. Ein Winkelwert von 90 dreht das Element um 90 Grad im Uhrzeigersinn.

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

Hinweise

Eine RotateTransform wird durch einen Winkel definiert, der ein Objekt durch einen Bogen um den Punkt CenterX, CenterY dreht.

Wenn der angewendete Winkelwert positiv ist, erfolgt die angewendete Drehung im Uhrzeigersinn. Es ist zulässig, einen Winkelwert zu verwenden, der negativ ist, wodurch die Drehung gegen den Uhrzeigersinn erfolgt. Bei Werten, die kleiner als –360 oder größer als 360 sind, werden die Werte umbrochen und so behandelt, als ob die mathematische Operation mod(360) angewendet wurde.

Um sich zu drehen, behalten Sie CenterX, CenterY als Standard (0,0) bei. Sie können ein nicht standardmäßiges CenterX, CenterY , verwenden, wenn Sie sich nicht an ortsverändern und stattdessen um einen Punkt im Referenzrahmen der Transformation drehen möchten. Sie können beispielsweise eine Umlaufbahn simulieren.

Eine Transformation wird in der Regel verwendet, um die UIElement.RenderTransform-Eigenschaft auszufüllen, um zu ändern, wie ein Element gerendert wird. UIElement verfügt außerdem über die UIElement.RenderTransformOrigin-Eigenschaft , die standardmäßig auf (0,0) festgelegt ist. RenderTransformOrigin richtet den Koordinatenreferenzrahmen für die Anwendung aller Transformationen einschließlich rotateTransform ein. Ein häufiges Szenario für RotateTransform ist die Drehung eines Objekts um seine Mitte (entweder als Animation oder als einmalige Transformation). Bei der Standardeinstellung UIElement.RenderTransformOrigin von (0,0) dreht sich ein Objekt nicht um seine Mitte, es dreht sich um die obere linke Ecke seines Begrenzungsrahmens. Daher besteht die übliche Möglichkeit, ein Objekt um seine Mitte zu drehen, darin, CenterY als (0,0) zu belassen, uiElement.RenderTransformOrigin jedoch auf einen logischen Punkt festzulegen, an dem die Werte sind (0,5,0,5). Mithilfe der Konvention für logische Punkte wird uiElement.RenderTransformOrigin am Mittelpunkt des Objekts platziert, d. h. an einem Ursprung, bei dem (x,y) genau die Hälfte der ActualHeight- und ActualWidth-Werte sind.

UIElement.RenderTransformOrigin verwendet die Konvention für logische Punkte; CenterX und CenterY verwenden diese Konvention nicht, sie verwenden tatsächliche Pixelwerte.

Die Renderingposition für ein Objekt kann auf einer Canvas mit Canvas.Left und Canvas.Top versetzt werden, aber dies zählt nicht als Transformation. Das Objekt behält seinen eigenen lokalen Ursprung (0,0) bei, wenn es in einer Canvas positioniert ist.

Es gibt andere Eigenschaften und Beziehungen, die sich auf die Darstellung der Drehung auswirken können. Wenn mehrere Transformationen mithilfe einer TransformGroup angewendet werden, ist die Reihenfolge wichtig. Die Transformationen werden in der Reihenfolge angewendet, in der sie in der TransformCollection angezeigt werden. Insbesondere wenn eine der Transformationen eine TranslateTransform ist, müssen Sie möglicherweise die Reihenfolge ändern, um den gewünschten Rotationseffekt zu erhalten.

Es gibt drei Möglichkeiten, mehrere Transformationen auf dasselbe Objekt anzuwenden:

  • Mithilfe einer TransformGroup, in der Sie die Reihenfolge angeben können, in der die einzelnen Transformationen angewendet werden.
  • Verwenden eines CompositeTransform-Objekts, bei dem jede der Transformationen durch Eigenschaften eines freigegebenen Transformationsobjekts aktiviert wird und die Transformationen in einer festen, bekannten Reihenfolge angewendet werden.
  • Mithilfe einer MatrixTransform legen Sie die verschiedenen Eigenschaften fest, die die 3×3-Matrix steuern, sodass Sie die typischen Klassifizierungen von Transformationen zu einer Transformation kombinieren. Dies ist wahrscheinlich die fortschrittlichste Technik, es sei denn, Sie verwenden ein Designtool zum Festlegen der Werte.

Animieren einer RotateTransform

Sie können eine Animation auf eine RotateTransform anwenden, um ein Element im Laufe der Zeit zu drehen. In der Regel wenden Sie die Animation nur auf die Angle-Eigenschaft an und animieren nicht CenterX, CenterY. Für eine Animation, die sich ständig dreht, verwenden Sie in der Regel nur den Wert To für eine Animation im Format "From/To/By ". Angle ist ein Double , sodass dies eine DoubleAnimation beinhaltet. Für eine fortlaufende Animation legen Sie repeatBehavior der DoubleAnimation auf Forever fest.

<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();
}

Konstruktoren

RotateTransform()

Initialisiert eine neue instance der RotateTransform-Klasse.

Eigenschaften

Angle

Ruft in Grad den Winkel einer Drehung im Uhrzeigersinn ab oder legt den Winkel fest.

AngleProperty

Identifiziert die Angle-Abhängigkeitseigenschaft.

CenterX

Ruft die x-Koordinate des Drehmittelpunkts für diese Transformation ab oder legt diese fest.

CenterXProperty

Identifiziert die CenterX-Abhängigkeitseigenschaft .

CenterY

Ruft die y-Koordinate des Drehmittelpunkts für diese Transformation ab oder legt diese fest.

CenterYProperty

Identifiziert die CenterY-Abhängigkeitseigenschaft .

Dispatcher

Gibt immer in einer Windows App SDK-App zurücknull. Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft den DispatcherQueue ab, dem dieses Objekt zugeordnet ist. Stellt DispatcherQueue eine Funktion dar, die auf den DependencyObject im UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
Inverse

Ruft nach Möglichkeit die umgekehrte Transformation dieser GeneralTransform ab.

(Geerbt von GeneralTransform)
InverseCore

Implementiert das Verhalten für den Rückgabewert von Inverse in einer abgeleiteten oder benutzerdefinierten GeneralTransform.

(Geerbt von GeneralTransform)

Methoden

ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Gibt einen beliebigen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, der in Fällen gilt, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt ist.

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
TransformBounds(Rect)

Transformiert das angegebene umgebende Feld und gibt ein an einer Achse ausgerichtetes umgebendes Feld zurück, dessen Größe genau für das Rechteck ausreicht.

(Geerbt von GeneralTransform)
TransformBoundsCore(Rect)

Stellt die Möglichkeit bereit, das TransformBounds-Verhalten in einer abgeleiteten Transformationsklasse zu überschreiben.

(Geerbt von GeneralTransform)
TransformPoint(Point)

Verwendet die Logik dieses Transformationsobjekts, um den angegebenen Punkt zu transformieren, und gibt das Ergebnis zurück.

(Geerbt von GeneralTransform)
TryTransform(Point, Point)

Versucht, den angegebenen Punkt zu transformieren, und gibt einen Wert zurück, der angibt, ob die Transformation erfolgreich durchgeführt wurde.

(Geerbt von GeneralTransform)
TryTransformCore(Point, Point)

Stellt die Möglichkeit bereit, das TryTransform-Verhalten in einer abgeleiteten Transformationsklasse zu überschreiben.

(Geerbt von GeneralTransform)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Gilt für:

Weitere Informationen