共用方式為


RotateTransform 類別

定義

在二維 x-y 座標系統中繞著指定點旋轉物件。

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 .../>
繼承
Object Platform::Object IInspectable DependencyObject GeneralTransform Transform RotateTransform
屬性

範例

轉換可以改變應用程式中文字的顯示,以建立裝飾效果。 此範例顯示使用 RotateTransform 旋轉 90 度文字。

此範例會使用 RotateTransform 來旋轉文字。 90 的角度 值會順時針旋轉元素 90 度。

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

備註

RotateTransform 是由 Angle 所定義,該 Angle 會透過點 CenterX CenterY 周圍的弧線旋轉物件。

如果套用 的 Angle 值為正數,則套用的旋轉方向為順時針方向。 使用負數 的 Angle 值是合法的,這會導致旋轉反時針。 對於小於 –360 或大於 360 的值,這些值會包裝並視為套用數學運算 mod(360)

若要就地旋轉,請將 CenterXCenterY 保留為預設 (0,0) 。 如果您不想就地旋轉,而想要在轉換的參照框架中繞著某個點旋轉,您可以使用非預設 CenterXCenterY 。 例如,您可以模擬軌道。

轉換通常用於填滿UIElement.RenderTransform屬性,以變更元素呈現的方式。 UIElement 也有 UIElement.RenderTransformOrigin 屬性,預設為 (0,0) 。 RenderTransformOrigin 會建立參考座標框架,以瞭解套用 RotateTransform 等所有轉換的方式。 RotateTransform 的常見案例是將物件繞著其中心旋轉 (為動畫或一次性轉換) 。 使用預設 UIElement.RenderTransformOrigin (0,0) 物件不會繞著其中心旋轉,它會繞著周框方塊的左上角旋轉。 因此,造成物件繞著中心旋轉的常見方式是讓 CenterX 保持中心CenterY (0,0) ,但將 UIElement.RenderTransformOrigin 設定為邏輯 ,其中值 (0.5,0.5) 。 使用邏輯點慣例,將UIElement.RenderTransformOrigin放在物件的中心點,換句話說,位於 (x,y) 的原點,完全是ActualHeightActualWidth 值的一半。

UIElement.RenderTransformOrigin 使用邏輯點慣例; CenterXCenterY 不會使用該慣例,它們會使用實際的圖元值。

對象的轉譯位置可以使用 Canvas.LeftCanvas.Top移,但這不算為轉換;當對象位於 Canvas 中時,物件會保留自己的本機 (0,0) 原

還有其他屬性和關聯性會影響旋轉的顯示方式。 如果使用 TransformGroup 套用多個轉換,則順序很重要。 轉換會依 其出現在 TransformCollection 的順序套用。 特別是如果其中一個轉換是 TranslateTransform,您可能必須改變順序來取得您想要的旋轉效果。

有三種方式可將多個轉換套用至相同的物件:

  • 使用 TransformGroup,您可以在其中指定每個轉換套用的順序。
  • 使用 CompositeTransform,其中每個轉換都是由共用 Transform 對象的屬性啟用,而轉換會以固定的已知順序套用。
  • 使用 MatrixTransform,您可以在其中設定控制 3×3 矩陣的各種屬性,讓您將轉換的一般分類結合成一個 轉換。 除非您使用設計工具來協助設定值,否則這可能是最進階的技術。

建立 RotateTransform 的動畫

您可以將動畫套用至 RotateTransform,以讓元素隨著時間旋轉。 一般而言,您只會將動畫套用至 Angle 屬性,而且不會讓 CenterXCenterY 產生動畫效果。 針對持續旋轉的動畫,您通常會只針對From/To/By 樣式動畫使用To值。 AngleDouble ,因此這牽涉到 DoubleAnimation。 針對連續動畫,您將 DoubleAnimationRepeatBehavior 設定為 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();
}

建構函式

RotateTransform()

初始化 RotateTransform 類別的新實例。

屬性

Angle

取得或設定順時針旋轉的角度 (以度為單位)。

AngleProperty

識別 Angle 相依性屬性。

CenterX

取得或設定這個轉換旋轉中心點的 X 座標。

CenterXProperty

識別 CenterX 相依性屬性。

CenterY

取得或設定這個轉換旋轉中心點的 Y 座標。

CenterYProperty

識別 CenterY 相 依性屬性。

Dispatcher

一律會在 null Windows 應用程式 SDK 應用程式中傳回。 請改用 DispatcherQueue

(繼承來源 DependencyObject)
DispatcherQueue

DispatcherQueue取得與這個 物件相關聯的 。 DispatcherQueue表示即使程式代碼是由非 UI 線程起始,也可以存取 DependencyObject UI 線程上的 。

(繼承來源 DependencyObject)
Inverse

如果可能,取得這個 GeneralTransform 的反向轉換。

(繼承來源 GeneralTransform)
InverseCore

在衍生或自定義 GeneralTransform 中實作 Inverse 傳回值的行為。

(繼承來源 GeneralTransform)

方法

ClearValue(DependencyProperty)

清除相依性屬性的本機值。

(繼承來源 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

傳回針對相依性屬性所建立的任何基底值,如果動畫未使用中,則會套用。

(繼承來源 DependencyObject)
GetValue(DependencyProperty)

DependencyObject 傳回相依性屬性的目前有效值。

(繼承來源 DependencyObject)
ReadLocalValue(DependencyProperty)

如果已設定本機值,則傳回相依性屬性的本機值。

(繼承來源 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

註冊通知函式,以接聽此 DependencyObject 實例上特定 DependencyProperty 的變更。

(繼承來源 DependencyObject)
SetValue(DependencyProperty, Object)

DependencyObject 上設定相依性屬性的本機值。

(繼承來源 DependencyObject)
TransformBounds(Rect)

轉換指定的週框方塊,並傳回剛好足夠包含該方塊的軸對齊週框方塊。

(繼承來源 GeneralTransform)
TransformBoundsCore(Rect)

提供覆寫衍生轉換類別中 TransformBounds 行為的方法。

(繼承來源 GeneralTransform)
TransformPoint(Point)

使用此轉換對象的邏輯來轉換指定的點,並傳回結果。

(繼承來源 GeneralTransform)
TryTransform(Point, Point)

嘗試轉換指定的點,並傳回表示轉換是否成功的值。

(繼承來源 GeneralTransform)
TryTransformCore(Point, Point)

提供在衍生轉換類別中覆寫 TryTransform 行為的方法。

(繼承來源 GeneralTransform)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消先前透過呼叫 RegisterPropertyChangedCallback 註冊的變更通知。

(繼承來源 DependencyObject)

適用於

另請參閱