Ci sono diversi modi per caricare una immagine.... eccone alcuni:

1) includere l'immagine nel progetto, settare nelle proprietà dell'immagine "Build Action" su "Resource" e "Do not copy":

<Image x:Name="imgPic" Source="images/Babba.jpg" />

In questo caso l'immagine sarà embeddata nel nostro assembly.

 

2) stesso esempio ma fatto da codice:

private void OnLoad(object sender, RoutedEventArgs e)
{
    BitmapImage bitmapImage = new BitmapImage();
    Uri uri = new Uri("images/Babba.jpg", UriKind.Relative);
    bitmapImage.UriSource = uri;
    imgPic.Source = bitmapImage;
}

 

3) settare "Build Action" su "Content" e "Do not copy", in questo modo l'immagine sarà embeddata nello XAP:

private void OnLoad(object sender, RoutedEventArgs e)
{
    BitmapImage bitmapImage = new BitmapImage();
    Uri uri = new Uri("/images/Babba.jpg", UriKind.Relative);
    bitmapImage.UriSource = uri;
    imgPic.Source = bitmapImage;
}

 

4) settare "Build Action" su "None" e "Copy always" (o anche "Copy if newer"); in questo caso l'immagine non sarà embeddata ma sarà esterna. Nell'esempio sotto basta copiare l'immagine allo stesso livello dello XAP (nella ClientBin):

private void OnLoad(object sender, RoutedEventArgs e)
{
    BitmapImage bitmapImage = new BitmapImage();
    Uri uri = new Uri("/Babba.jpg", UriKind.Relative);
    bitmapImage.UriSource = uri;
    imgPic.Source = bitmapImage;
}

 

 

5) caricare una immagine dal web specificando il tipo di Uri Assoluto:

private void OnLoad(object sender, RoutedEventArgs e)
{
    BitmapImage bitmapImage = new BitmapImage();
    Uri uri = new Uri("http://www.ongari.it/Images/BabbaOnLine.jpg", UriKind.Absolute);
    bitmapImage.UriSource = uri;
    imgPic.Source = bitmapImage;
}

 

 

6) caricamento tramite WebClient in modo asincrono per file di grosse dimensioni; nell'esempio sotto riportato, posizionare l'immagine nella ClientBin dove si trova lo XAP:

private void OnLoad(object sender, RoutedEventArgs e)
{
    WebClient wc = new WebClient();
    wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
    wc.OpenReadAsync(new Uri("Babba.jpg", UriKind.Relative));
}
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null)
    {
        StreamResourceInfo streamResourceInfo = new StreamResourceInfo(e.Result as Stream, null);
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.SetSource(streamResourceInfo.Stream);
        imgPic.Source = bitmapImage;
    }
}

 

7) caricamento da un file ZIP scaricato tramite WebClient; nell'esempio sotto riportato, posizionare lo ZIP nella ClientBin dove si trova lo XAP:

private void OnLoad(object sender, RoutedEventArgs e)
{
    WebClient wc = new WebClient();
    wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
    wc.OpenReadAsync(new Uri("MioZippone.zip", UriKind.Relative), "Babba.jpg");
}
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null)
    {
        StreamResourceInfo stream1 = new StreamResourceInfo(e.Result as Stream, null);
        String uri = e.UserState as String;
        StreamResourceInfo stream2 = Application.GetResourceStream(stream1, new Uri(uri, UriKind.Relative));
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.SetSource(stream2.Stream);
        imgPic.Source = bitmapImage;
    }
}

 

8) caricamento da percorso locale:

private void OnLoad(object sender, RoutedEventArgs e)
{
    OpenFileDialog d = new OpenFileDialog();
    d.Filter = "Immagini (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|Tutti i files (*.*)|*.*";
    if (d.ShowDialog() == true)
    {
        Stream stream = d.SelectedFile.OpenRead();
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.SetSource(stream);
        imgPic.Source = bitmapImage;
        stream.Close();
    }
}