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

속성 값

렌더링 변형을 선언하는 값입니다. 기본값은 좌표가 (0,0)인 Point입니다.

예제

다음 예제에서는 코드에서 요소를 빌드하고, 를 적용한 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을 초과하는 값도 허용되며 더 틀에 얽매이지 않는 변환 효과가 발생합니다. instance 경우 를 (5,5)로 설정한 RenderTransformOrigin 다음 를 적용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 없음

적용 대상

추가 정보