Подтвердить что ты не робот

Как сделать вращение вокруг центра управления в XAML

Я хочу, чтобы повернуть кнопку до 90 градусов, но она обрезается, потому что она вращает arount (0,0). Как заставить его вращаться вокруг центра, если я не знаю, что это ширина в пикселях (это шаблон для многих кнопок)

4b9b3361

Ответ 1

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

Ответ 2

Вы должны установить элемент управления RenderTransformOrigin равным 0,5, 0,5.

например:.

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

Ответ 3

Я понимаю, что источник не имеет отношения к 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>