线性渐变画笔淡化WPF

时间:2010-07-20 20:50:29

标签: c# wpf graphics gradient brushes

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

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

3 个答案:

答案 0 :(得分:24)

我不确定你是否只能在画笔级别工作,但是你可以将OpacityMask应用于你的控件:

<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}">

答案 1 :(得分:9)

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

答案 2 :(得分: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));