Язык

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. Значение угла 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>

Комментарии

ПоворотTransform определяется углом, который поворачивает объект через дугу вокруг точки CenterX, CenterY.

Если примененное угловое значение положительно, поворот применяется в направлении по часовой стрелке. Это законно использовать отрицательное значение угла , которое приводит к тому, что поворот будет счетчиком. Для значений меньше –360 или более 360 значения обтекаются и обрабатываются как если бы математические операции mod(360) были применены.

Чтобы повернуть на месте, оставьте CenterX, CenterY в качестве значения по умолчанию (0,0). Вы можете использовать неотделимый ЦентрX, 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) источник, когда он размещается на холсте.

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

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

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

Анимация поворотаTransform

Вы можете применить анимацию к поворачиваемойtransform, чтобы вызвать поворот элемента с течением времени. Обычно анимация применяется только к свойству Angle и не анимируйте CenterX, CenterY. Для непрерывной анимации спиннинга обычно используется только значение To для анимации стилей from/To/By . Угол является двойным , поэтому это включает в себя 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 в приложении пакета SDK для приложений windows. Вместо этого используйте 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)

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

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