矩形仅在某些网格区域中可见

时间:2013-02-24 12:33:35

标签: c# wpf silverlight xaml windows-phone-8

screen1

如何让绿色矩形只在蓝色矩形内可见?蓝色是网格的边界。我想切断不在这个网格内的所有东西。请注意,绿色矩形将移动。

2 个答案:

答案 0 :(得分:4)

由于Silverlight中没有ClipToBounds属性,因此您必须将Clip属性设置为RectangleGeometry

当Grid的大小固定时,您可以简单地设置一个固定大小的矩形:

<Grid>
    <Grid.Clip>
        <RectangleGeometry Rect="0,0,400,600"/>
    </Grid.Clip>
    ...
</Grid>

当Grid的大小可以更改时,您可以在Clip处理程序中设置SizeChanged属性:

<Grid SizeChanged="GridSizeChanged">
    ...
</Grid>

处理程序代码:

private void GridSizeChanged(object sender, SizeChangedEventArgs e)
{
    ((UIElement)sender).Clip =
        new RectangleGeometry
        {
            Rect = new Rect(0, 0, e.NewSize.Width, e.NewSize.Height)
        };
}

答案 1 :(得分:0)

<Grid Width="200" Height="100">       
<Grid.Clip>
    <RectangleGeometry Rect="0, 0, 200, 100"/>
</Grid.Clip>

来源:http://www.scottlogic.co.uk/blog/colin/2009/05/silverlight-cliptobounds-can-i-clip-it-yes-you-can/