1

假设我有一个具有某种笔触颜色的矩形。我可以定义某些边缘以具有不同的颜色吗?例如,假设我希望笔画的顶部和底部是一种颜色,但笔画的左右是不同的颜色?

如果这是不可能的,你知道一个好方法吗?

4

4 回答 4

2

我最终通过使两个边界彼此重叠来做到这一点。我相应地调整了边框厚度。

于 2011-03-21T15:06:53.887 回答
1

不是开箱即用。同样不幸的是 Rectangle 和 Border 都是密封类,所以最好的办法是扩展 Shape 类,实现一个矩形并为每个边缘创建 Brush 依赖属性(默认为已经存在的 Stroke Brush)。

编辑:或者,您可以在 XAML 中对其进行模板化,只需使用一堆彼此重叠的边框,并且每个边框仅显示 1 个边缘。

于 2011-03-21T15:02:48.140 回答
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>
于 2011-03-21T15:08:19.873 回答
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>

这并不出色,并且依赖于已知和固定的边界大小。但是,使用其他一些画笔类型,还有其他可能效果更好的变体。

于 2011-03-21T15:20:37.257 回答