如何在 XAML 中绕控制中心旋转

我想做旋转按钮到90度,但它得到裁剪,因为它旋转左右(0,0)。如何使它旋转中心,如果我不知道它的宽度像素(这是一个模板的许多按钮)

60117 次浏览

您必须将控件的 RenderTransformOrigin 设置为0.5,0.5。

例如:

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

我的理解是,原点与布局变换无关。

MSDN 表示:

设置转换提供了强大的伸缩和 然而,布局变换忽略了翻译变换 这是因为子元素的布局系统行为 元素的任何偏移都会自动更正到 缩放或旋转元素到布局和坐标中的位置 父元素的系统。

下面的“正确”旋转按钮。

<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>