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#.
Reader Level:

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#.

 

Login to add your contents and source code to this article
post comment
     
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Join a Chapter