特定の線の色を持つ長方形があるとします。特定のエッジを異なる色で定義できますか? たとえば、ストロークの上部と下部を同じ色にしたいが、ストロークの左右を別の色にしたいとしますか?
これが不可能な場合、良い方法を知っていますか?
特定の線の色を持つ長方形があるとします。特定のエッジを異なる色で定義できますか? たとえば、ストロークの上部と下部を同じ色にしたいが、ストロークの左右を別の色にしたいとしますか?
これが不可能な場合、良い方法を知っていますか?
私は2つの境界線を1つずつ重ねることでこれを行うことになりました。それに応じて境界線の太さを調整します。
箱から出してはいけません。残念ながら、Rectangle と Border は両方とも封印されたクラスであるため、最善の策は、Shape クラスを拡張し、長方形を実装して、各エッジの Brush 依存関係プロパティを作成することです (既定値は既存の Stroke Brush です)。
編集:代わりに、これを XAML でテンプレート化することもできます。単に、一連の Borders を重ねて使用し、それぞれ 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>
これは素晴らしいことではなく、既知で固定されている境界線のサイズに依存しています。ただし、他のブラシ タイプのいくつかを使用して、より適切に機能する可能性のある他のバリアントがあります。