如何在Silverlight中创建拉伸剪切矩形

时间:2011-04-15 15:48:57

标签: silverlight clipping

由于Silverlight在控件上没有'ClipToBounds'属性的舒适功能,我必须自己定义剪裁形状。我想知道是否可以创建一个跟随我的控件大小的剪切矩形。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

如果布局中存在要动态剪辑的现有控件,请使用其SizeChanged事件。例如,假设你要剪辑这个网格: -

    <Grid SizeChanged="Grid_SizeChanged" Width="50" Height="20">
        <Grid.Clip>
            <RectangleGeometry />
        </Grid.Clip>
        <TextBlock Margin="0 -9 0 0" Text="This text should not be legible" />
    </Grid>

使用代码隐藏: -

   private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        ((RectangleGeometry)((Grid)sender).Clip).Rect = new Rect(0.0, 0.0, e.NewSize.Width, e.NewSize.Height);
    }  

对于您自己的自定义控件,您可以考虑在ArrangeOverride中处理剪辑矩形,而不是依赖于SizeChanged事件。在这种情况下,您可能希望将RectangleGeometry分配给代码中的Clip属性,而不是依赖于在默认模板的Xaml中分配它。

答案 1 :(得分:0)

Silverlight支持: 尝试使用HorisontalAlignment和垂直对齐属性。将它们设置为拉伸。 如果这不起作用,那么你将不得不发布xaml示例。