RotateTransform 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在二維 x-y 座標系統中繞著指定點旋轉物件。
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 .../>
- 繼承
- 屬性
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
範例
轉換可以改變應用程式中文字的顯示,以建立裝飾效果。 此範例顯示使用 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)
。
若要就地旋轉,請將 CenterX、 CenterY 保留為預設 (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) 的原點,完全是 ActualHeight 和 ActualWidth 值的一半。
UIElement.RenderTransformOrigin 使用邏輯點慣例; CenterX 和 CenterY 不會使用該慣例,它們會使用實際的圖元值。
物件的轉譯位置可以使用Canvas.Left和Canvas.Top位移,但這不算為轉換;當物件位於 Canvas 中時,物件會保留自己的本機 (0,0) 原點。
還有其他屬性和關聯性會影響旋轉的顯示方式。 如果使用 TransformGroup套用多個轉換,則順序很重要。 轉換會依 其出現在 TransformCollection的順序套用。 特別是如果其中一個轉換是 TranslateTransform,您可能必須改變順序來取得您想要的旋轉效果。
有三種方式可將多個轉換套用至相同的物件:
- 使用 TransformGroup,您可以在其中指定每個轉換套用的順序。
- 使用 CompositeTransform,其中每個轉換都是由共用 Transform 物件的屬性啟用,而轉換會以固定的已知順序套用。
- 使用 MatrixTransform,您可以在其中設定控制 3×3 矩陣的各種屬性,讓您將轉換的一般分類結合成一個 轉換。 除非您使用設計工具來協助設定值,否則這可能是最進階的技術。
建立RotateTransform的動畫
您可以將動畫套用至 RotateTransform,以讓元素隨著時間旋轉。 一般而言,您只會將動畫套用至 Angle 屬性,而且不會讓 CenterX、 CenterY產生動畫效果。 針對持續旋轉的動畫,您通常會只針對From/To/By樣式動畫使用To值。 Angle 是 Double ,因此這牽涉到 DoubleAnimation。 針對連續動畫,您將DoubleAnimation的RepeatBehavior設定為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 |
取得與此物件相關聯的 CoreDispatcher 。 CoreDispatcher代表可以存取 UI 執行緒上DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。 (繼承來源 DependencyObject) |
Inverse |
如果可能,取得這個 GeneralTransform的反向轉換。 (繼承來源 GeneralTransform) |
InverseCore |
在衍生或自訂GeneralTransform中實作Inverse傳回值的行為。 (繼承來源 GeneralTransform) |