C# 线性梯度笔刷淡入WPF

C# 线性梯度笔刷淡入WPF,c#,wpf,graphics,gradient,brushes,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 
  x:Key="HeaderBackgroundBrush" 
  EndPoint=".5,1" 
  StartPoint="1,0">
  <GradientStop Color="#006699" Offset="1"/>
  <GradientStop Color="#80A8CC" Offset="0.5"/>
</LinearGradientBrush>


只需将颜色指定为ARGB(包括alpha),如下所示:#aarggbb。然后将最后一个渐变停止点的alpha值设为0(完全透明;在您的例子中为#0080A8CC)。HTH.

我不确定您是否可以仅在画笔级别工作,但是您可以将
不透明掩码应用于控件:

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

...
如果您想在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));

这将不起作用,因为所需的不透明度渐变方向与颜色渐变方向不同。将其更改为该方向,它将起作用。渐变=新的LinearGradientBrush(起始颜色、结束颜色、新点(0,0)、新点(1,0));这符合我的需要。事实上,我没有意识到使用alpha值。我在RGB十六进制值中看到了“额外”值,但没有意识到它是什么。