Nice programing

XAML에서 컨트롤 중심을 회전하는 방법

nicepro 2020. 10. 31. 10:07
반응형

XAML에서 컨트롤 중심을 회전하는 방법


버튼을 90도 회전하고 싶지만 (0,0) 회전하기 때문에 잘립니다. 너비를 픽셀 단위로 모르는 경우 중앙을 중심으로 회전하는 방법 (많은 버튼의 템플릿입니다)


<Button ...>
  <Button.LayoutTransform>
    <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90"/>
  </Button.LayoutTransform>
</Button>

컨트롤의 RenderTransformOrigin을 0.5, 0.5로 설정해야합니다.

전의.:

<Button RenderTransformOrigin="0.5, 0.5">
    <RepeatButton.RenderTransform>
        <RotateTransform Angle="90"/>
    </RepeatButton.RenderTransform>
</RepeatButton>

내 이해는 원점이 LayoutTransform과 관련이 없다는 것입니다.

MSDN 말한다 :

변형을 설정하면 강력한 크기 조정 및 회전 기능이 제공됩니다. 그러나 LayoutTransform은 TranslateTransform 작업을 무시합니다. 이는 FrameworkElement의 자식 요소에 대한 레이아웃 시스템 동작이 크기가 조정되거나 회전 된 요소의 위치에 대한 오프셋을 부모 요소의 레이아웃 및 좌표계로 자동 수정하기 때문입니다.

다음은 버튼을 "올바르게"회전시킵니다.

<Grid ShowGridLines="True">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition Width="Auto"></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Button Grid.Row="1" Grid.Column="1">Excessively Long Button Still Ok
        <Button.LayoutTransform>
            <RotateTransform Angle="90" />
        </Button.LayoutTransform>
    </Button>
</Grid>

참고 URL : https://stackoverflow.com/questions/4132194/how-to-do-rotation-around-controls-center-in-xaml

반응형