Desvanecimiento de pincel de degradado lineal WPF
Pregunta
Tengo un pincel que colorea el fondo de un encabezado.Me gusta el aspecto del pincel, pero me gustaría que se volviera transparente en el tercio inferior.¿Alguna idea de como hacer esto?
<LinearGradientBrush
x:Key="HeaderBackgroundBrush"
EndPoint=".5,1"
StartPoint="1,0">
<GradientStop Color="#006699" Offset="1"/>
<GradientStop Color="#80A8CC" Offset="0.5"/>
</LinearGradientBrush>
Solución
No estoy seguro de que puedas hacerlo trabajando sólo al nivel del pincel, sin embargo, puedes aplicar un OpacityMask
a tu 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}">
Otros consejos
Simplemente especifique los colores como ARGB (incluyendo Alpha) como este: #ArtagBBB.Luego, dé su último gradiente detenga un valor alfa de 0 (totalmente transparente; en su caso # 0080A8cc).Hth.
Si desea hacerlo en C # use el siguiente código.Esto le dará un rosa claro / salmón a un cepillo completamente transparente.Cambie el #FF y # 00 para obtener un gradiente de transparencia diferente.
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));