假设我有一个具有特定笔触颜色的矩形。我可以定义某些边缘以获得不同的颜色吗?例如,假设我希望笔触的顶部和底部是一种颜色,但笔划的左侧和右侧是不同的颜色?
如果无法做到这一点,你知道一个好方法吗?
答案 0 :(得分:2)
我最终通过在彼此的顶部有两个边框来做到这一点。我相应地调整了边框厚度。
答案 1 :(得分:1)
没有开箱即用。同样不幸的是,Rectangle和Border都是密封类,所以最好的办法是扩展Shape类,实现一个矩形并为每条边创建Brush依赖属性(默认为已经存在的Stroke Brush)。
编辑:或者您可以在XAML中对此进行模板化,只需使用一堆边框,并且每个边框仅显示1条边。
答案 2 :(得分:1)
除了已经说过的内容之外,不能使用as-is控件,但是你可以使用网格中的Path来获得相同的效果,具体取决于你想要的效果。
<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>
答案 3 :(得分:0)
您可以通过为边框使用更复杂的画笔来完成此操作:
<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>
这并不精彩,并且依赖于已知和修复的边界的大小。但是,使用其他一些画笔类型可能会有更好的效果。