我的RotateTransform
行为有问题。
我在 a 中有一个用户控件Grid
,它旋转了 -135º,但是当我将该形状移动到 的极限时Grid
,它开始消失,就像它没有旋转一样。我怎样才能解决这个问题?
问问题
1017 次
2 回答
1
根据您的描述,我会说UserControl
被 的边界剪裁Grid
,这是预期的默认行为。您可以设置您的ClipToBounds
属性Grid
以确保在它之外运行的任何内容都不会被剪裁。
例如,考虑以下情况:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="1" Grid.Column="1" ClipToBounds="True" Background="Blue">
<Label Content="Testing a long label to see what happens" Background="Gray" RenderTransformOrigin=".5,.5">
<Label.RenderTransform>
<RotateTransform Angle="-135"/>
</Label.RenderTransform>
</Label>
</Grid>
</Grid>
</Window>
这导致:
替代文字 http://img514.imageshack.us/img514/8485/screenshotmf.png
更改ClipToBounds
为true
结果:
于 2009-09-08T12:22:19.477 回答
0
应用轮换的位置可能存在问题。
RotateTransform (CenterX, CenterY) 上有两个属性,用于确定旋转的点。
我引用MSDN
RotateTransform 的 CenterX 和 CenterY 属性指定对象旋转的点。该中心点在被变换元素的坐标空间中表示。默认情况下,旋转应用于 (0,0),即要变换的对象的左上角。
下一个示例将折线对象围绕点 (25,50) 顺时针旋转 45 度。
它可能围绕对象的左上角旋转,如果那是底层画布左上角的集合,那么它将在画布空间之外旋转。
希望这可以帮助
于 2009-09-26T16:10:46.440 回答