UIElement.RenderTransformOrigin Свойство

Определение

Возвращает или задает центральную точку любого возможного преобразования отрисовки, объявленного RenderTransformпо отношению к границам элемента. Это свойство зависимостей.

public:
 property System::Windows::Point RenderTransformOrigin { System::Windows::Point get(); void set(System::Windows::Point value); };
public System.Windows.Point RenderTransformOrigin { get; set; }
member this.RenderTransformOrigin : System.Windows.Point with get, set
Public Property RenderTransformOrigin As Point

Значение свойства

Значение, объявляющее преобразование отрисовки. Значение по умолчанию — это Point координаты (0,0).

Примеры

В следующем примере создаются элементы в коде, применяется объектRenderTransformOrigin, а затем применяется .RenderTransform

public RotateAboutCenterExample()
{
    this.WindowTitle = "Rotate About Center Example";
    NameScope.SetNameScope(this, new NameScope());
    StackPanel myStackPanel = new StackPanel();
    myStackPanel.Margin = new Thickness(50);

    Button myButton = new Button();
    myButton.Name = "myRenderTransformButton";
    this.RegisterName(myButton.Name,myButton);
    myButton.RenderTransformOrigin = new Point(0.5,0.5);
    myButton.HorizontalAlignment = HorizontalAlignment.Left;
    myButton.Content = "Hello World";

    RotateTransform myRotateTransform = new RotateTransform(0);
    myButton.RenderTransform = myRotateTransform;
    this.RegisterName("MyAnimatedTransform",myRotateTransform);

    myStackPanel.Children.Add(myButton);

    //
    // Creates an animation that accelerates through 40% of its duration and
    //      decelerates through the 60% of its duration.
    //
    DoubleAnimation myRotateAboutCenterAnimation = new DoubleAnimation();
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform");
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,new PropertyPath(RotateTransform.AngleProperty));
    myRotateAboutCenterAnimation.From = 0.0;
    myRotateAboutCenterAnimation.To = 360;
    myRotateAboutCenterAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));

    // Create a Storyboard to contain the animations and
    // add the animations to the Storyboard.
    Storyboard myStoryboard = new Storyboard();
    myStoryboard.Children.Add(myRotateAboutCenterAnimation);

    // Create an EventTrigger and a BeginStoryboard action to
    // start the storyboard.
    EventTrigger myEventTrigger = new EventTrigger();
    myEventTrigger.RoutedEvent = Button.ClickEvent;
    myEventTrigger.SourceName = myButton.Name;
    BeginStoryboard myBeginStoryboard = new BeginStoryboard();
    myBeginStoryboard.Storyboard = myStoryboard;
    myEventTrigger.Actions.Add(myBeginStoryboard);
    myStackPanel.Triggers.Add(myEventTrigger);

    this.Content = myStackPanel;
}
Public Sub New()
    Me.WindowTitle = "Rotate About Center Example"
    NameScope.SetNameScope(Me, New NameScope())
    Dim myStackPanel As New StackPanel()
    myStackPanel.Margin = New Thickness(50)

    Dim myButton As New Button()
    myButton.Name = "myRenderTransformButton"
    Me.RegisterName(myButton.Name,myButton)
    myButton.RenderTransformOrigin = New Point(0.5,0.5)
    myButton.HorizontalAlignment = HorizontalAlignment.Left
    myButton.Content = "Hello World"


    Dim myRotateTransform As New RotateTransform(0)
    myButton.RenderTransform = myRotateTransform
    Me.RegisterName("MyAnimatedTransform",myRotateTransform)

    myStackPanel.Children.Add(myButton)

    '
    ' Creates an animation that accelerates through 40% of its duration and
    '      decelerates through the 60% of its duration.
    '
    Dim myRotateAboutCenterAnimation As New DoubleAnimation()
    Storyboard.SetTargetName(myRotateAboutCenterAnimation,"MyAnimatedTransform")
    Storyboard.SetTargetProperty(myRotateAboutCenterAnimation,New PropertyPath(RotateTransform.AngleProperty))
    myRotateAboutCenterAnimation.From = 0.0
    myRotateAboutCenterAnimation.To = 360
    myRotateAboutCenterAnimation.Duration = New Duration(TimeSpan.FromMilliseconds(1000))

    ' Create a Storyboard to contain the animations and
    ' add the animations to the Storyboard.
    Dim myStoryboard As New Storyboard()
    myStoryboard.Children.Add(myRotateAboutCenterAnimation)

    ' Create an EventTrigger and a BeginStoryboard action to
    ' start the storyboard.
    Dim myEventTrigger As New EventTrigger()
    myEventTrigger.RoutedEvent = Button.ClickEvent
    myEventTrigger.SourceName = myButton.Name
    Dim myBeginStoryboard As New BeginStoryboard()
    myBeginStoryboard.Storyboard = myStoryboard
    myEventTrigger.Actions.Add(myBeginStoryboard)
    myStackPanel.Triggers.Add(myEventTrigger)

    Me.Content = myStackPanel
End Sub

Комментарии

RenderTransformOrigin имеет несколько нестандартное использование Point значения структуры, в том, что Point не представляет абсолютное расположение в системе координат. Вместо этого значения от 0 до 1 интерпретируются как фактор для диапазона текущего элемента в каждой оси x,y. Например, (0.5,0.5) преобразование отрисовки будет центрировано по элементу или (1,1) помещать преобразование отрисовки в правом нижнем углу элемента. NaN не является допустимым значением.

Значения, превышающие 0 и 1, также принимаются и приводят к более нестандартным эффектам преобразования. Например, если задано RenderTransformOrigin значение (5,5), а затем применить точку RotateTransformповорота, точка поворота будет хорошо за пределами самого элемента. Преобразование будет спиной элемента вокруг большого круга, который выходит за пределы нижнего правого края. Источник может находиться где-то внутри родительского элемента и, возможно, может быть вне кадра или представления. Отрицательные значения точек аналогичны, они будут переходить за пределы верхней левой границы.

Преобразования отрисовки не влияют на макет и обычно используются для анимации или применения временного эффекта к элементу.

Использование атрибута XAML

<object RenderTransformOrigin="xOrigin, yOrigin"/>

Использование элемента свойства XAML

<object>
  <object.RenderTransformOrigin>
    <Point X=" xOrigin " Y=" yOrigin "/>
  </object.RenderTransformOrigin>
</object>

Значения XAML

xOrigin Коэффициент горизонтального происхождения. Обычно это значение в диапазоне от 0 до 1. См. примечания.

yOrigin Коэффициент вертикального источника. Обычно это значение в диапазоне от 0 до 1. См. примечания.

Сведения о свойстве зависимостей

Элемент Ценность
Поле идентификатора RenderTransformOriginProperty
Свойства метаданных, равные свойству true None

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

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