Monthly Archives: October 2009

Working with Image.Source on Silverlight 3

Below are some options to work with Image.Source

1. Embedded in the .xap file as Content

image

image

Note that the Build Action is “Content”

XAML

<Image x:Name="imgContent" Source="/Assets/Images/2.jpg" />

Code (C#)

imgContent.Source = new BitmapImage(new Uri("/Assets/Images/2.jpg", UriKind.Relative));

2. Embedded in the .xap file as Resource

image

image

Note that the Build Action is “Resource”

XAML

<Image x:Name="imgResource" Source="/SilverlightApplication1;component/Assets/Images/1.jpg" />

Code (C#)

imgResource.Source = new BitmapImage(new Uri("/SilverlightApplication1;component/Assets/Images/1.jpg", UriKind.Relative));

3. Absolute URL

The file is stored anywhere in the internet

XAML

<Image x:Name="imgAbsolute" Source="http://i3.silverlight.net/avatar/meidianto.jpg?cdn_id=10092009" />

Code (C#)

imgAbsolute.Source = new BitmapImage(new Uri("http://i3.silverlight.net/avatar/meidianto.jpg?cdn_id=10092009", UriKind.Absolute));

4. Stored inside the web application/website

Note: in this example the image is stored in the same folder as the .xap file

image

XAML

<Image x:Name="imgServer" Source="/3.jpg" />

Code (C#)

imgServer.Source = new BitmapImage(new Uri("/3.jpg", UriKind.Relative));

5. Async Network Call

Note: in this example the image is stored in the same folder as the .xap file as above

Code (C#)

private void LoadImage()
{
    WebClient client = new WebClient();
    client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
    client.OpenReadAsync(new Uri("3.jpg", UriKind.Relative));
}

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null
        && e.Result != null)
    {
        BitmapImage img = new BitmapImage();
        img.SetSource(e.Result);

        imgServer.Source = img;
    }
}