如何在wp7中显示来自web的图像?

时间:2012-01-18 12:17:47

标签: c# silverlight windows-phone-7

我的wp7应用程序中有一个页面需要在其中显示图像。我有一个url数组。它可能包含0到500个网址。如果阵列中没有url,则会显示“No Images”消息。如果url数组中只有一个url,则应显示该图像。如果它包含多个url,那么我需要显示与第一个url对应的图像和页面中的下一个按钮。如果我按下下一个按钮,将加载第二个图像,然后应显示后退按钮。  图像可能具有更大的尺寸,然后应该启用滚动。

我该怎么做?

当我试图在WebBrowser中加载图像时,我收到一条错误“你不能调用WebBrowser方法,直到它在可视树中。”

2 个答案:

答案 0 :(得分: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);
     });
}

bmp(bitmapimage)指定为imagesource。 通过这种方式,您可以从服务器下载图像。

答案 1 :(得分: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
}