gpt4 book ai didi

wpf - 带彩色圆角的透明矩形

转载 作者:行者123 更新时间:2023-12-02 09:24:41 24 4
gpt4 key购买 nike

我想在 WPF 中为矩形的圆角设置颜色。

这是我想要的示例:

enter image description here

现在,我有这个代码:

<Rectangle x:Name="rect" Fill="Transparent" RadiusY="10" RadiusX="10"/>

最佳答案

更简单的方法:

<Rectangle Fill="Red" Height="200" Width="200" >
<Rectangle.Clip >
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="0,0,200,200"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry x:Name="transparentRect" Center="100 100" RadiusX="120" RadiusY="120"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Rectangle.Clip>
</Rectangle>

注意

如果更改矩形的大小,则还必须调整几何图形的矩形和半径值,以便它将显示正确的比例。

我在几分钟内完成了此操作,因此可能还有改进的空间。

干杯

编辑

为了获得完全令人满意的方法,我为您制作了 2 个转换器

代码

public class RectangleConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
var recta = value as Rectangle;
if (recta == null) return null;
return new Rect { X = 0, Y = 0, Height = recta.ActualHeight, Width = recta.ActualWidth };
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}

public class ElipseGeoConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
var recta = value as Rectangle;
if (recta == null) return null;
return new EllipseGeometry(new Point(recta.ActualWidth / 2, recta.ActualHeight / 2), recta.ActualWidth / 3 * 2,
recta.ActualHeight / 3 * 2);
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}

使用

 <Rectangle Fill="Red" Height="100" Width="100" >
<Rectangle.Clip >
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry>
<RectangleGeometry.Rect>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Rectangle}}" Converter="{StaticResource RectangleConverter}"></Binding>
</RectangleGeometry.Rect>
</RectangleGeometry>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Rectangle}}" Converter="{StaticResource GeoConverter}"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Rectangle.Clip>
</Rectangle>

关于wpf - 带彩色圆角的透明矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com