Reader Level:
ARTICLE

LinearGradientBrush in Silverlight

Posted by Mahesh Chand Articles | Silverlight with C# April 16, 2009
This article demonstrates how to use a linear gradient brush in Silverlight using XAML and C#.
  • 0
  • 0
  • 25312

This article demonstrates how to use a linear gradient brush in Silverlight using XAML and C#.

Linear Gradient Brush

A linear gradient brush paints an area with a linear gradient. The LinearGradientBrush object represents a linear gradient brush. The default value linear gradient value is diagonal. The StartPoint and EndPoint properties of the LinearGradientBrush represent the start and end points of a gradient. The default values of these properties is (0, 0) and (1, 1), which is upper-left corner to lower-right corner of an area.

Figure 1 taken from MSDN shows a rectangle filled with a diagonal gradient and Figure 2 shows a rectangle filled with a gradient brush with multiple gradient stops.


Figure 1

 


Figure 2

 

Creating a Linear Gradient Brush

The LinearGradientBrush element in XAML creates a linear gradient brush. The following code snippet creates a linear gradient brush with blue and red colors by setting GradientStops. The StartPoint and EndPoint values are (0, 0) and (1, 1).

<LinearGradientBrush StartPoint="0,0" EndPoint="1,1" >                   

    <GradientStop Color="Blue" Offset="0" />

    <GradientStop Color="Red" Offset="1.0" />                 

</LinearGradientBrush>

We can fill a shape with a gradient brush by setting a shape's Fill property to the gradient brush. The code snippet in Listing 1 creates a rectangle shape sets the Fill property to a LinearGradientBrush with blue and red colors.

<Rectangle Width="200" Height="100">

    <Rectangle.Fill>

        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" >                   

            <GradientStop Color="Blue" Offset="0" />

            <GradientStop Color="Red" Offset="1.0" />                 

        </LinearGradientBrush>

    </Rectangle.Fill>

</Rectangle>

Listing 1

 

The output looks like Figure 3.

Figure 3

Now let's apply multiple stops with multiple colors. The code snippet in Listing 2 creates a linear gradient brush with five stops.

<Rectangle Width="200" Height="100">

    <Rectangle.Fill>

        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" >                   

            <GradientStop Color="Blue" Offset="0.1" />

            <GradientStop Color="Orange" Offset="0.25" />

            <GradientStop Color="Yellow" Offset="0.50" />

            <GradientStop Color="Green" Offset="0.75" />

            <GradientStop Color="Red" Offset="1.0" />   

        </LinearGradientBrush>

    </Rectangle.Fill>

</Rectangle>

Listing 2

The new output generated by Listing 2 looks like Figure 4.

Figure 4

 

The CreateARectangleWithLGBrush method listed in Listing 3 draws same rectangle in Figure 4 dynamically.

public void CreateARectangleWithLGBrush()

{

    // Create a Rectangle

    Rectangle blueRectangle = new Rectangle();

    blueRectangle.Height = 100;

    blueRectangle.Width = 200;

 

    // Create a linear gradient brush with five stops 

    LinearGradientBrush fiveColorLGB = new LinearGradientBrush();

    fiveColorLGB.StartPoint = new Point(0, 0);

    fiveColorLGB.EndPoint = new Point(1, 1);

 

    // Create and add Gradient stops

    GradientStop blueGS = new GradientStop();

    blueGS.Color = Colors.Blue;

    blueGS.Offset = 0.0;

    fiveColorLGB.GradientStops.Add(blueGS);

 

    GradientStop orangeGS = new GradientStop();

    orangeGS.Color = Colors.Orange;

    orangeGS.Offset = 0.25;

    fiveColorLGB.GradientStops.Add(orangeGS);

 

    GradientStop yellowGS = new GradientStop();

    yellowGS.Color = Colors.Yellow;

    yellowGS.Offset = 0.50;

    fiveColorLGB.GradientStops.Add(yellowGS);

 

    GradientStop greenGS = new GradientStop();

    greenGS.Color = Colors.Green;

    greenGS.Offset = 0.75;

    fiveColorLGB.GradientStops.Add(greenGS);

 

    GradientStop redGS = new GradientStop();

    redGS.Color = Colors.Red;

    redGS.Offset = 1.0;

    fiveColorLGB.GradientStops.Add(redGS);

 

    // Set Fill property of rectangle

    blueRectangle.Fill = fiveColorLGB;

 

    // Add Rectangle to the page

    LayoutRoot.Children.Add(blueRectangle);

}

Listing 3

 

By simply changing the StartPoint and EndPoint values, we can generate a vertical gradient shapes. By changing a few lines below in code listed in Listing 4 generates Figure 5.

// Create a linear gradient brush with five stops 

LinearGradientBrush fiveColorLGB = new LinearGradientBrush();

fiveColorLGB.StartPoint = new Point(0, 0.5);

fiveColorLGB.EndPoint = new Point(1, 0.5);

Listing 4

Figure 5

Summary

In this article, we saw how to create and use a linear gradient brush in Silverlight using XAML and C#.

 

COMMENT USING

Trending up