【问题标题】:How to create stretching clipping rectangle in Silverlight如何在 Silverlight 中创建拉伸剪切矩形
【发布时间】:2011-08-06 11:04:14
【问题描述】:

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

【问题讨论】:

    标签: silverlight clipping


    【解决方案1】:

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

    【讨论】:

    • 我为 FrameworkElement 做了一个行为,它可以满足您的描述。现在我在 Silverlight 中有 ClipToBounds! :) 正是我想要的!谢谢!
    【解决方案2】:

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

    【讨论】:

    • 对齐属性不影响控件的剪辑区域。
    • 如果父级具有三角形形状,ClipToBounds 会起作用吗?我问这段代码,如果你的父级总是矩形,那么对齐属性就是你要找的。​​span>
    • 您似乎对 WPF ClipToBounds 的实际作用感到很困惑。它的功能是关于裁剪而不是调整大小或对齐。对齐属性与问题完全无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多