Linear Gradient Brush Fade WPF
Asked Answered
B

3

9

I have a brush that colors the background of a header. I like the way the brush looks but would like it to fade to transparent in the bottom third. Any ideas how to do this?

<LinearGradientBrush 
  x:Key="HeaderBackgroundBrush" 
  EndPoint=".5,1" 
  StartPoint="1,0">
  <GradientStop Color="#006699" Offset="1"/>
  <GradientStop Color="#80A8CC" Offset="0.5"/>
</LinearGradientBrush>
Boracite answered 20/7, 2010 at 20:50 Comment(0)
T
28

I'm not sure you can do it by working only at the brush level, however you could apply an OpacityMask to your control:

<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}">
Teepee answered 20/7, 2010 at 21:36 Comment(0)
L
10

just specify the colors as ARGB (including alpha) like this: #AARRGGBB. Then give your last gradient stop an alpha value of 0 (fully transparent; in your case #0080A8CC). HTH.

Lettielettish answered 20/7, 2010 at 21:25 Comment(3)
This won't work, because the desired direction of the opacity gradient is not the same as the direction of the color gradientTeepee
Change it to this and it will work. gradient = new LinearGradientBrush(startColour.Color, endColour.Color,new Point(0,0),new Point(1,0));Hypothecate
This worked for my needs. I was in fact not aware of using alpha values. I had seen "extra" values in the RGB hex values, but did not realize what it was.Dorran
H
0

If you want to do it in C# use the following code. This will give you a light pink/salmon to fully transparent brush. Change the #FF and #00 to get a different transparency gradient.

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));
Hypothecate answered 27/4, 2018 at 4:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.