0

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

替代文字 http://img522.imageshack.us/img522/6241/cenask.jpg

4

2 回答 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

更改ClipToBoundstrue结果:

替代文字 http://img36.imageshack.us/img36/2682/screenshottz.png

于 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 回答