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
Атрибуты

Примеры

Преобразования могут изменять отображение текста в приложении, создавая декоративный эффект. В этом примере показан текст, повернутый на 90 градусов с помощью RotateTransform.

В этом примере для поворота текста используется объект 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, но это не считается преобразованием; объект сохраняет собственный локальный (0,0) источник при его расположении в Canvas.

Существуют и другие свойства и связи, которые могут повлиять на способ поворота. При применении нескольких преобразований с помощью TransformGroup порядок имеет значение. Преобразования применяются в том порядке, в который они отображаются в TransformCollection. Особенно если одним из преобразований является TranslateTransform, может потребоваться изменить порядок, чтобы получить нужный эффект поворота.

Существует три способа применения нескольких преобразований к одному и тому же объекту:

  • Использование TransformGroup, где можно указать порядок применения каждого преобразования.
  • Использование CompositeTransform, где каждое преобразование включается свойствами общего объекта Transform , а преобразования применяются в фиксированном, известном порядке.
  • С помощью MatrixTransform можно задать различные свойства, управляющие матрицей 3×3, таким образом, чтобы объединить типичные классификации преобразований в одно преобразование. Если вы не используете средство разработки для задания значений, это, вероятно, самый сложный метод.

Анимация RotateTransform

Вы можете применить анимацию к RotateTransform, чтобы вызвать поворот элемента с течением времени. Обычно анимация применяется только к свойству Angle и не анимировать CenterX, CenterY. Для непрерывной анимации обычно используется только значение To для анимации в стиле From/To/By . Angle имеет значение Double , поэтому он включает в себя DoubleAnimation. Для непрерывной анимации необходимо задать для параметра RepeatBehaviorобъекта DoubleAnimation значение 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 App SDK. Вместо этого используйте DispatcherQueue .

(Унаследовано от DependencyObject)
DispatcherQueue

Возвращает объект , DispatcherQueue с которым связан этот объект. представляет DispatcherQueue средство, которое может получить доступ к в потоке DependencyObject пользовательского интерфейса, даже если код инициируется потоком, не относящегося к пользовательскому интерфейсу.

(Унаследовано от DependencyObject)
Inverse

Возвращает обратное преобразование этого GeneralTransform, если это возможно.

(Унаследовано от GeneralTransform)
InverseCore

Реализует поведение для возвращаемого значения Inverse в производной или пользовательской generalTransform.

(Унаследовано от GeneralTransform)

Методы

ClearValue(DependencyProperty)

Очищает локальное значение свойства зависимостей.

(Унаследовано от DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Возвращает любое базовое значение, установленное для свойства зависимостей, которое применяется в случаях, когда анимация не активна.

(Унаследовано от DependencyObject)
GetValue(DependencyProperty)

Возвращает текущее действующее значение свойства зависимостей из DependencyObject.

(Унаследовано от DependencyObject)
ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если задано локальное значение.

(Унаследовано от DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Регистрирует функцию уведомления для прослушивания изменений определенного DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от 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)

Применяется к

См. также раздел