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 |