日期:2014-05-17  浏览次数:20895 次

WPF,请看一下这个布局?

<Grid Background="Red" HorizontalAlignment="Left" Height="120" Margin="32,225,0,0" VerticalAlignment="Top" Width="107">
    <Border Background="Blue" BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="72" Margin="43,29,0,0" VerticalAlignment="Top" Width="83" RenderTransformOrigin="0.5,0.5">
        <Border.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="44.785"/>
                <TranslateTransform/>
            </TransformGroup>
        </Border.RenderTransform>
    </Border>
</Grid>



上面的代码中,Border相对于Grid的右边距为0,为什么Broder超出了Grid,为什么没有被裁剪呢?

------解决方案--------------------
本帖最后由 caozhy 于 2013-10-20 19:08:12 编辑
第二行
HorizontalAlignment="Left"
->
HorizontalAlignment="Right"
------解决方案--------------------
Border.RenderTransform
=>
Border.LayoutTransform
原因是:LayoutTransform参与布局,而RenderTransform不参与,所以你用RenderTransform会扩展到面板边界的外面。