2012-12-04 15 views
5

Ben windows telefon platformu için bir acemi ve ben metin kutusundan bir görüntü url okur basit bir uygulama oluşturmaya çalışıyorum ve bir indirme düğmesine tıklayarak bu görüntüye indirir Telefon belleği ve ardından bir Görüntü kontrolünde görüntüler.Windows Phone 7 indirme görüntü ve görüntü o

bu kod kullanıcı indir butonuna tıkladığında yazılır:

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

ve bu DownloadStringCompleted olay işleyicisi: bu bir 'belirtilmemiş hatası' istisna veriyor

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; 
      } 
     } 

. Nasıl çözeceksin? ya da bunu yapmak için daha iyi bir yaklaşım bilen var mı?

Başka bir soru, e.Result'un yapısı nedir? indirilmiş görüntü içeriği bir dizge mi yoksa bir şeyin yolu mu?

Teşekkür

cevap

8

Bir resim ikili içerik değil, bir dizedir. Sen (yerine DownloadStringAsync arasında) WebClient.OpenReadAsync kullanmak ya var ya da BitmapImage için doğrudan kaynak olarak url ayarlayın:

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

ama benim telefonun hafızasına kaydederek görseli web'den okuyup değilim sanki görünüyor . Yoksa e.Result'dan aldığım akışı kaydedebileceğim anlamına mı geliyor? –

+0

"Bellek" belirsiz. RAM'e mi yoksa depolama birimine mi atıf yapıyorsunuz? Ve depolama için bile, resmi yalıtılmış depoya veya resim merkezine kaydedebilirsiniz. –