2012-12-04 8 views
5

Sono un novizio della piattaforma di Windows Phone e sto cercando di creare una semplice applicazione che legge un URL di immagine dalla casella di testo e al clic di un pulsante di download scarica questa immagine nel memoria del telefono e quindi visualizzarlo in un controllo Immagine.Windows Phone 7 scaricare l'immagine e visualizzarla

questo codice viene scritto quando l'utente fa clic sul pulsante di download:

string url = "http://some-url-image-name.jpg"; 
WebClient client = new WebClient(); 
client.DownloadStringCompleted += DownloadCompleted; 
client.DownloadStringAsync(new Uri(url)); 

e questo è il gestore di eventi DownloadStringCompleted:

private void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      if (e.Error != null) 
       return; 
      string result = e.Result; 
      using (var stream = new MemoryStream(Encoding.Unicode.GetBytes(e.Result))) 
      { 
       var bi = new BitmapImage(); 
       bi.SetSource(stream); 
       image.Source = bi; 
      } 
     } 

sta dando un'eccezione 'errore non specificato'. Come risolverlo? o qualcuno conosce un approccio migliore per farlo?

Un'altra domanda, qual è la natura di e.Result? è il contenuto dell'immagine scaricata come una stringa o il percorso verso qualcosa o cosa?

Grazie

risposta

8

Un quadro è contenuto binario, non è una stringa. La pagina può essere usare WebClient.OpenReadAsync (invece di DownloadStringAsync), o impostare direttamente l'URL come sorgente per la vostra BitmapImage:

var bi = new BitmapImage(new Uri("http://some-url-image-name.jpg")); 
+0

ma che sembra come se sto leggendo l'immagine dal web e non salvarlo nella memoria del mio cellulare . O intendi che posso salvare il flusso che ho ricevuto da e.Result? –

+0

"Memoria" è ambigua. Ti riferisci alla RAM o allo spazio di archiviazione? E anche per l'archiviazione, è possibile salvare l'immagine nell'archivio isolato o nell'hub di immagini. –