RotateTransform 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
围绕二维 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 .../>
- 继承
- 属性
示例
转换可以更改应用程序中文本的显示,以创建装饰效果。 此示例显示使用 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)
。
若要就地旋转,请将 CenterX、 CenterY 保留为默认 (0,0) 。 如果不想就地旋转,而是想要围绕转换的参考框架中的点旋转,则可以使用非默认 CenterX、 CenterY 。 例如,可以模拟轨道。
转换通常用于填充 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 上偏移,但这不算作转换;当对象定位在 Canvas 中时,会保留其自己的本地 (0,0) 原点。
还有其他属性和关系可能会影响旋转的显示方式。 如果使用 TransformGroup 应用了多个转换,则顺序很重要。 转换按转换在 TransformCollection 中的出现顺序应用。 特别是当其中一个转换是 TranslateTransform 时,可能需要更改顺序才能获得所需的旋转效果。
可通过三种方法将多个转换应用于同一对象:
- 使用 TransformGroup,可在其中指定每个转换应用的顺序。
- 使用 CompositeTransform,其中每个转换都由共享 Transform 对象的属性启用,并且转换按固定的已知顺序应用。
- 使用 MatrixTransform 设置控制 3×3 矩阵的各种属性,以便将转换的典型分类合并为一个 转换。 除非使用设计工具来帮助设置值,否则这可能是最先进的技术。
对 RotateTransform 进行动画处理
可以将动画应用于 RotateTransform,使元素随时间推移而旋转。 通常,仅将动画应用于 Angle 属性,不对 CenterX、 CenterY 进行动画处理。 对于持续旋转的动画,通常只需使用“从/到/By”样式动画的“To”值。 Angle 为 Double ,因此这涉及 DoubleAnimation。 对于连续动画,请将 DoubleAnimation 的 RepeatBehavior 设置为“永远”。
<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应用中返回 |
DispatcherQueue |
|
Inverse |
获取此 GeneralTransform 的反转换(如果可能)。 (继承自 GeneralTransform) |
InverseCore |
在派生的或自定义的 GeneralTransform 中实现 Inverse 的返回值的行为。 (继承自 GeneralTransform) |