UIElement.RenderTransformOrigin 속성

정의

요소의 경계에 따라 RenderTransform에서 선언된 모든 사용 가능한 렌더링 변형의 중심점을 가져오거나 설정합니다.Gets or sets the center point of any possible render transform declared by RenderTransform, relative to the bounds of the element. 이 속성은 종속성 속성입니다.This is a dependency property.

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

속성 값

렌더링 변형을 선언하는 값입니다.The value that declares the render transform. 기본값은 좌표가 (0,0)인 Point입니다.The default value is a Point with coordinates (0,0).

예제

다음 예제에서는 코드에서 요소를 작성 하 고 RenderTransformOrigin적용 한 다음 RenderTransform을 적용 합니다.The following example builds up elements in code, applies a RenderTransformOrigin, and then applies a 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

설명

Point는 좌표계의 절대 위치를 나타내지 않으므로 RenderTransformOrigin Point 구조 값을 다소 비표준 사용 합니다.RenderTransformOrigin has a somewhat nonstandard use of the Point structure value, in that the Point does not represent an absolute location in a coordinate system. 대신, 0과 1 사이의 값은 각 x, y 축에서 현재 요소의 범위에 대 한 요소로 해석 됩니다.Instead, values between 0 and 1 are interpreted as a factor for the range of the current element in each x,y axis. 예를 들어 (0.5, 0.5)를 설정 하면 렌더링 변환이 요소에 가운데 맞춤 되 고, (1, 1)은 요소의 오른쪽 아래에 렌더링 변환이 배치 됩니다.For example, (0.5,0.5) will cause the render transform to be centered on the element, or (1,1) would place the render transform at the bottom right corner of the element. NaN 허용 되는 값이 아닙니다.NaN is not an accepted value.

0과 1을 초과 하는 값도 사용할 수 있으며,이로 인해 더 있는 변환 효과가 발생 합니다.Values beyond 0 and 1 are also accepted, and will result in more unconventional transform effects. 예를 들어 RenderTransformOrigin을 (5, 5)로 설정 하 고 RotateTransform를 적용 하는 경우 회전 지점은 요소 자체의 범위를 벗어납니다.For instance, if you set RenderTransformOrigin to be (5,5), and then apply a RotateTransform, the rotation point will be well outside the bounds of the element itself. 변환은 오른쪽 아래에서 시작 하는 큰 원에서 요소를 회전 합니다.The transform will spin your element around in a big circle that originates beyond bottom right. 원본은 부모 요소 내부의 어딘가에 있을 수 있으며 프레임이 나 뷰가 아닐 수 있습니다.The origin might be somewhere inside its parent element and could possibly be possibly out of frame or view. 음수 점 값은 비슷하며 왼쪽 위 범위를 벗어납니다.Negative point values are similar, these will go beyond the top left bounds.

렌더링 변환은 레이아웃에 영향을 주지 않으며 일반적으로 요소에 애니메이션 효과를 주거나 임시 효과를 적용 하는 데 사용 됩니다.Render transforms do not affect layout, and are typically used to animate or apply a temporary effect to an element.

XAML 특성 사용XAML Attribute Usage

<object RenderTransformOrigin="xOrigin, yOrigin"/>  

XAML 속성 요소 사용XAML Property Element Usage

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

XAML 값XAML Values

xOriginxOrigin
가로 원점입니다.The horizontal origin factor. 이 값은 일반적으로 0에서 1 사이의 값으로 지정 됩니다.This is typically given as a value between 0 and 1. 설명 부분을 참조하세요.See Remarks.

yOriginyOrigin
세로 원점 요소입니다.The vertical origin factor. 이 값은 일반적으로 0에서 1 사이의 값으로 지정 됩니다.This is typically given as a value between 0 and 1. 설명 부분을 참조하세요.See Remarks.

종속성 속성 정보Dependency Property Information

식별자 필드Identifier field RenderTransformOriginProperty
메타 데이터 속성 설정 trueMetadata properties set to true 없음None

적용 대상

추가 정보