假设我有一个具有某种笔触颜色的矩形。我可以定义某些边缘以具有不同的颜色吗?例如,假设我希望笔画的顶部和底部是一种颜色,但笔画的左右是不同的颜色?
如果这是不可能的,你知道一个好方法吗?
假设我有一个具有某种笔触颜色的矩形。我可以定义某些边缘以具有不同的颜色吗?例如,假设我希望笔画的顶部和底部是一种颜色,但笔画的左右是不同的颜色?
如果这是不可能的,你知道一个好方法吗?
我最终通过使两个边界彼此重叠来做到这一点。我相应地调整了边框厚度。
不是开箱即用。同样不幸的是 Rectangle 和 Border 都是密封类,所以最好的办法是扩展 Shape 类,实现一个矩形并为每个边缘创建 Brush 依赖属性(默认为已经存在的 Stroke Brush)。
编辑:或者,您可以在 XAML 中对其进行模板化,只需使用一堆彼此重叠的边框,并且每个边框仅显示 1 个边缘。
除了已经说过的内容之外,这不能使用原样控件来完成,但您可以使用网格中的路径来获得相同的效果,具体取决于您想要的效果。
<Grid Margin="5">
<Path Stroke="Red" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="0 0" EndPoint="0 100"/>
</Path.Data>
</Path>
<Path Stroke="Yellow" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="0 100" EndPoint="100 100"/>
</Path.Data>
</Path>
<Path Stroke="Pink" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="100 100" EndPoint="100 0"/>
</Path.Data>
</Path>
<Path Stroke="Green" StrokeThickness="1">
<Path.Data>
<LineGeometry StartPoint="100 0" EndPoint="0 0"/>
</Path.Data>
</Path>
</Grid>
您可以通过为边框使用更复杂的画笔来完成此操作:
<Border BorderThickness="2" Width="200" Height="100">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0.5,0" SpreadMethod="Reflect">
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Blue" Offset="0.02" />
<GradientStop Color="Red" Offset="0.02" />
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
这并不出色,并且依赖于已知和固定的边界大小。但是,使用其他一些画笔类型,还有其他可能效果更好的变体。