我遇到RotateTransform
行为问题。
我在Grid
内有一个用户控件,它旋转了-135º,但是当我将那个形状移动到Grid
的极限时,它开始消失,就像它没有旋转一样。我该如何解决这个问题?
答案 0 :(得分: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>
这导致:
alt text http://img514.imageshack.us/img514/8485/screenshotmf.png
将ClipToBounds
更改为true
会导致:
alt text http://img36.imageshack.us/img36/2682/screenshottz.png
答案 1 :(得分:0)
这可能是应用轮换的问题。
RotateTransform(CenterX,CenterY)上有两个属性,用于确定旋转的点。
我引用MSDN
RotateTransform的CenterX和CenterY属性指定对象旋转的点。该中心点在被变换的元素的坐标空间中表示。默认情况下,旋转应用于(0,0),这是要变换的对象的左上角。
下一个示例将Polyline对象绕点(25,50)顺时针旋转45度。
它可能围绕对象的左上角旋转,如果设置为底层画布的左上角,则它将在画布空间之外旋转。
希望这有帮助