在XAML中使用矩形形状作为剪辑
有没有办法可以使用普通的Rectangle(形状)作为XAML中另一个对象的剪辑的一部分。 看起来我应该能够,但解决方案正在逃避我..
我知道我可以使用’RectangleGeometry’类型的方法,但我对上面提到的代码方面的解决方案更感兴趣。
尝试Shape.RenderedGeometry属性 。
ClipRect.DefiningGeometry
和ClipRect.RenderedGeometry
仅包含RadiusX
和RadiusY
值,但不包含Rect
。
我不确定你想要实现什么(我从你的样本中不清楚)但你可以编写一个IValueConverter
,它将从引用的Rectangle
提取你需要的信息:
public class RectangleToGeometryConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var rect = value as Rectangle; if (rect == null || targetType != typeof(Geometry)) { return null; } return new RectangleGeometry(new Rect(new Size(rect.Width, rect.Height))) { RadiusX = rect.RadiusX, RadiusY = rect.RadiusY }; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
然后,您将在绑定定义中使用此转换器:
当然,您需要先将转换器添加到资源中: