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 旋转文本。 Angle 值为 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 定义,该角度通过点 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.TopCanvas 上偏移,但这不算作转换;当对象定位在 Canvas 中时,会保留其自己的本地 (0,0) 原点。

还有其他属性和关系可能会影响旋转的显示方式。 如果使用 TransformGroup 应用了多个转换,则顺序很重要。 转换按转换在 TransformCollection 中的出现顺序应用。 特别是当其中一个转换是 TranslateTransform 时,可能需要更改顺序才能获得所需的旋转效果。

可通过三种方法将多个转换应用于同一对象:

  • 使用 TransformGroup,可在其中指定每个转换应用的顺序。
  • 使用 CompositeTransform,其中每个转换都由共享 Transform 对象的属性启用,并且转换按固定的已知顺序应用。
  • 使用 MatrixTransform 设置控制 3×3 矩阵的各种属性,以便将转换的典型分类合并为一个 转换。 除非使用设计工具来帮助设置值,否则这可能是最先进的技术。

RotateTransform 进行动画处理

可以将动画应用于 RotateTransform,使元素随时间推移而旋转。 通常,仅将动画应用于 Angle 属性,不对 CenterXCenterY 进行动画处理。 对于持续旋转的动画,通常只需使用“从/到/By”样式动画的“To”值。 AngleDouble ,因此这涉及 DoubleAnimation。 对于连续动画,请将 DoubleAnimationRepeatBehavior 设置为“永远”。

<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

始终在Windows 应用 SDK应用中返回 null 。 请改用 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)

适用于

另请参阅