7

我有一个为标题背景着色的画笔。我喜欢画笔的外观,但希望它在底部三分之一处淡化为透明。任何想法如何做到这一点?

<LinearGradientBrush 
  x:Key="HeaderBackgroundBrush" 
  EndPoint=".5,1" 
  StartPoint="1,0">
  <GradientStop Color="#006699" Offset="1"/>
  <GradientStop Color="#80A8CC" Offset="0.5"/>
</LinearGradientBrush>
4

3 回答 3

27

我不确定您是否可以通过仅在画笔级别工作来做到这一点,但是您可以将 anOpacityMask应用于您的控件:

<LinearGradientBrush
    x:Key="HeaderBackgroundOpacityMask"
    StartPoint="0,0"
    EndPoint="0,1">
  <GradientStop Color="#FFFFFFFF" Offset="0"/>
  <GradientStop Color="#FFFFFFFF" Offset="0.667"/>
  <GradientStop Color="#00FFFFFF" Offset="1"/>
</LinearGradientBrush>

...
<Border Background="{StaticResource HeaderBackgroundBrush}"
        OpacityMask="{StaticResource HeaderBackgroundOpacityMask}">
于 2010-07-20T21:36:28.820 回答
10

只需将颜色指定为 ARGB(包括 alpha),如下所示:#AARRGGBB。然后给你的最后一个渐变停止一个 0 的 alpha 值(完全透明;在你的情况下 #0080A8CC)。HTH。

于 2010-07-20T21:25:19.037 回答
0

如果您想在 C# 中执行此操作,请使用以下代码。这会给你一个浅粉色/鲑鱼色到完全透明的刷子。更改#FF 和#00 以获得不同的透明度渐变。

var startColour = (SolidColorBrush)new BrushConverter().ConvertFrom("#FFff99a8");
var endColour = (SolidColorBrush)new BrushConverter().ConvertFrom("#00ff99a8");
_dirtyColourBackground = new LinearGradientBrush(startColour.Color, endColour.Color,new Point(0,0),new Point(1,0));
于 2018-04-27T04:50:14.893 回答