用户控件消失,而不是在RotateTransform下转动

时间:2009-09-08 11:00:50

标签: .net wpf rotatetransform

我遇到RotateTransform行为问题。
我在Grid内有一个用户控件,它旋转了-135º,但是当我将那个形状移动到Grid的极限时,它开始消失,就像它没有旋转一样。我该如何解决这个问题?

alt text http://img522.imageshack.us/img522/6241/cenask.jpg

2 个答案:

答案 0 :(得分:1)

根据您的描述判断,我会说UserControlGrid的边界剪切,这是预期的默认行为。您可以在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度。

它可能围绕对象的左上角旋转,如果设置为底层画布的左上角,则它将在画布空间之外旋转。

希望这有帮助