Silverlight Canvas Control
The Canvas control, used as a container for child controls, defines functionality to position the child controls. This article demonstrates how to create and use a Canvas control in Silverlight using C# and XAML. 
Creating a Canvas
The Canvas element represents a Silverlight Canvas control in XAML. 
 
<Canvas/>
 
The Canvas control has three properties.  The Left property represents the distance between the left side of a control and its parent container Canvas. The Top property represents the distance between the top of a control and its parent container Canvas. 
 
The code in Listing 1 creates a Canvas and adds three Rectangle controls and position them using Canvas control properties. 
 
<Canvas Background="LightCyan" >
    <Rectangle 
    Canvas.Left="10" Canvas.Top="10" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" Fill="Red" />
 
    <Rectangle 
    Canvas.Left="60" Canvas.Top="60" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" Fill="Blue" />
 
    <Rectangle 
    Canvas.Left="110" Canvas.Top="110" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" Fill="Green" />
   
</Canvas>
Listing 1
The output looks like Figure 1. 
Figure 1
The z-order of a control determines whether the control is in front of or behind another overlapping control. The default z-order of controls is the order controls are created in. The ZIndex property of Canvas represents the z-order of a control. The maximum value 
g 2 changes the z-order of these rectangles using the ZIndex property of the Canvas.  
The code snippet in Listing 2 sets the position of the Canvas control in the left top corner of the page. 
<Canvas Background="LightCyan" >
    <Rectangle 
    Canvas.Left="10" Canvas.Top="10" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" 
        Fill="Red" Canvas.ZIndex="2" />
 
    <Rectangle 
    Canvas.Left="60" Canvas.Top="60" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" 
        Fill="Blue" Canvas.ZIndex="1" />
 
    <Rectangle 
    Canvas.Left="110" Canvas.Top="110" 
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" 
        Fill="Green" Canvas.ZIndex="3" />
   
</Canvas>
Listing 2
The new output looks like Figure 2 where blue rectangle is below red and green is at the top of both of them. 
![CanvasImg2.jpg]()
Figure 2
 
Formatting a Canvas
The Background property of the Canvas sets the background colors of a Canvas. You may use any brush to fill the border. The code in Listing 3 uses a linear gradient brush to draw the background of a Canvas. 
<Canvas.Background>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" >
        <GradientStop Color="Blue" Offset="0.1" />
        <GradientStop Color="Orange" Offset="0.25" />                    
        <GradientStop Color="Green" Offset="0.75" />
        <GradientStop Color="Red" Offset="1.0" />
    </LinearGradientBrush>
</Canvas.Background>
<Canvas.Foreground>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" >                    
        <GradientStop Color="Orange" Offset="0.25" />
        <GradientStop Color="Green" Offset="1.0" />                    
    </LinearGradientBrush>
</Canvas.Foreground>
Listing 3
 
The new Canvas looks like Figure 3. 
![CanvasImg3.jpg]()
Figure 3
Setting Image as Background of a Canvas
To set an image as background of a Canvas, we can set an image as the Background of the Canvas. The code snippet in Listing 4 sets the background of a Canvas to an image.  
<Canvas.Background>
    <ImageBrush ImageSource="Flowers.jpg" />
</Canvas.Background>
Listing 4
The new output looks like Figure 4.
![CanvasImg4.jpg]()
Figure 4
Summary
In this article, I discussed how we can create a Canvas control in Silverlight and C#.  We saw how we can format a Canvas by setting its background property. After that, we saw you to set an image as the background of a Canvas. We also saw how we can take advantages of Canvas properties Left, Top, and ZIndex to position child controls on a canvas.