【发布时间】:2016-04-15 15:20:44
【问题描述】:
我有一个Border,我正在尝试将其BorderBrush 设置为从#D3D3D3 到BFBFBF 的左边框渐变和从#BFBFBF 到#717171 的右边框渐变。问题是,如果我这样做:
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="#D3D3D3"/>
<GradientStop Offset="0.1" Color="#BFBFBF"/>
<GradientStop Offset="0.9" Color="#BFBFBF"/>
<GradientStop Offset="1" Color="#717171"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
我需要正确选择Offset,这很难。此外,对于不同的边框大小,我需要不同的偏移量。一般来说,如果我有BorderThickness = 10, 0, 10, 0,我希望边框渐变为左侧0-10像素的C1-C2颜色和右侧0-10像素的C2-C3颜色(或border.Width-border.Width + 10像素)。我不关心上下边框,我可以将它们设置为纯色。
无论如何我可以实现我所描述的吗?
我希望边框看起来像这样(这张图片是我正在尝试做的面板的底部裁剪):
我还有其他建议-请分享
【问题讨论】:
-
您可能只需将“导体”添加到监视控件更改的控件(您可能可以为此使用附加的行为/属性)。它可以检查边框粗细属性,并在粗细变化时创建具有正确尺寸的渐变。你可以为这个组件提供一个基础颜色,它可以用来生成渐变
-
@Charleh 我可以这样做,但听起来很老套......我试图模仿的这些面板在旧 QT 程序和后期 Win 98 设计中到处都是,我不敢相信 WPF 可以'不要以更简单的方式做到这一点。无论如何,感谢您的提示 - 如果我找不到更好的解决方案,我将不得不这样做
标签: wpf