2012-01-18 3 views
1

У меня есть страница в моем приложении wp7, которое должно отображать изображение в нем. У меня есть массив url. Он может содержать от 0 до 500 URL-адресов. Если в массиве нет url, тогда сообщение показывает «Нет изображений». если только один url находится в массиве url, тогда изображение должно отображаться. Если в нем содержится более одного URL-адреса, мне нужно отобразить изображение, соответствующее первому URL-адресу и следующей кнопке на странице. Если я нажму следующую кнопку, загрузится второе изображение, а затем появится обратная кнопка. Изображение может иметь больший размер, поэтому прокрутка должна быть включена.Как отобразить изображение из Интернета в wp7?

Как это сделать?

Когда я пытаюсь загрузить изображение в WebBrowser, я получил сообщение об ошибке «Вы не можете вызывать методы WebBrowser до тех пор, пока он не появится в визуальном дереве».

ответ

2

Гораздо проще использовать WebClient вместо HttpWebRequest.

public void LoadImage(string uri) 
{ 
    WebClient wc = new WebClient(); 
    wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted); 
    wc.OpenReadAsync(new Uri(uri)); 
} 

private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    BitmapImage bi = new BitmapImage(); 
    bi.SetSource(e.Result);    // Here, you got your image 
} 
3

Попробуйте это,

public void DownloadImages() 
{ 

    HttpWebRequest reqest = (HttpWebRequest)WebRequest.Create(your_url); 
    reqest.BeginGetResponse(DownloadImageCallback, reqest1); 
} 


void DownloadImageCallback(IAsyncResult result) 
{ 
    HttpWebRequest req = (HttpWebRequest)result.AsyncState; 
    HttpWebResponse responce = (HttpWebResponse)req1.EndGetResponse(result); 
    Stream s = responce.GetResponseStream(); 
    Deployment.Current.Dispatcher.BeginInvoke(() => 
    { 
     bmp = new BitmapImage(); 
     bmp.SetSource(s); 
    }); 
} 

ВМР (BitmapImage) назначен ImageSource. Таким образом, вы можете загрузить изображение с сервера.

Смежные вопросы