I am making a bar chart and I want two separate gradients for each bar. First I want a gradient to go from top to bottom solid red to transparent red. I want to paint over the top of that a gradient that goes from right to left, black to opaque.
So – In the bottom left we should have;
- Bottom left – Alpha 0
- Bottom right – Alpha 0
- Top left – Alpha 255 Colour Red
- Top Right – Alpha 255 Colour Black
So in effect I want to take a solid colour, add a left to right gradient to black then take the output of that and add a top to bottom gradient to transparency.
All this and I want it to be in a single brush, is this even possible?
Yes. Use a VisualBrush whose Visual is a Rectangle inside a Border to combine the other two brushes.
Something like this:
CombinedBrush can be used to paint your bars, and you will get the effect you describe.
Silverlight version
Since Silverlight has no VisualBrush you must build a WritableBitmap in code and use it with an ImageBrush:
Here is how the VisualBrushSimulator might be implemented:
Note that this is not a true VisualBrush simulation, since changes to the Visual do not affect the brush.