silverlight - 如何在 Silverlight 中创建拉伸(stretch)裁剪矩形

标签 silverlight clipping

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

最佳答案

如果您要动态剪辑的布局中存在现有控件,则使用其 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 中分配。

关于silverlight - 如何在 Silverlight 中创建拉伸(stretch)裁剪矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679264/

相关文章:

c++ - 使用 Clipper 库 (c++) 进行线和多边形裁剪返回空路径

html - 如何使用 CSS 应用反向文本掩码

android - 如何在 android 中剪辑星星?但是明星的样子一目了然

wpf - Fortran 可以与 Windows 上的 Silverlight、WPF 或 MFC 交互吗?

silverlight - Silverlight 中的同步 ADO.NET 数据服务调用

silverlight - 如何在Silverlight中设置Image.Source(后面的代码)

.net - 对 WCF 服务的异步调用以静默方式随机失败

c# - 组合在一起的两个可枚举的数据模板

java - OpenGL 非常大的网格裁剪

C++、OpenGL 裁剪