RotateTransform クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
2 次元の 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 は、Point CenterX の CenterY を中心とする円弧を通じてオブジェクトを回転させる角度によって定義されます。
適用される Angle 値が正の場合、適用される回転は時計回りの方向になります。 負の 角度 の値を使用すると、回転が反時計回りに回転します。 –360 未満または 360 より大きい値の場合、値はラップされ、数学的演算 mod(360)
が適用されたかのように扱われます。
回転するには、 CenterX、 CenterY を既定値 (0,0) のままにします。 既定以外の CenterXCenterY を使用する場合は、インプレース回転せず、代わりに変換の参照フレーム内のポイントを中心に回転することができます。 たとえば、軌道をシミュレートできます。
通常、Transform は、要素のレンダリング方法を変更するために UIElement.RenderTransform プロパティを塗りつぶすために使用されます。 UIElement には UIElement.RenderTransformOrigin プロパティもあります。このプロパティの既定値は (0,0) です。 RenderTransformOrigin は、RotateTransform を含むすべての変換を適用する方法の参照座標フレームを確立します。 RotateTransform の一般的なシナリオは、(アニメーションまたは 1 回限りの変換として) オブジェクトを中心に回転することです。 既定の 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 に表示される順序で適用されます。 特に、変換の 1 つが TranslateTransform の場合は、目的の回転効果を得るために順序を変更する必要があります。
同じオブジェクトに複数の変換を適用するには、次の 3 つの方法があります。
- TransformGroup を使用して、各変換が適用される順序を指定できます。
- CompositeTransform を使用して、各変換が共有 Transform オブジェクトのプロパティによって有効になり、変換が固定の既知の順序で適用されます。
- MatrixTransform を使用して、変換の一般的な分類を 1 つの Transform に結合する方法で 3×3 行列を制御するさまざまなプロパティを設定します。 デザイン ツールを使用して値を設定しない限り、これはおそらく最も高度な手法です。
RotateTransform のアニメーション化
アニメーションを RotateTransform に適用して、時間の経過と同時に要素を回転させることができます。 通常、アニメーションは Angle プロパティにのみ適用し、 CenterX、 CenterY はアニメーション化しません。 継続的に回転するアニメーションの場合は、通常、From/To/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 の逆関数の戻り値の動作を実装します。 (継承元 GeneralTransform) |