Silverlight Windows Phone 7:从URL加载图像

时间:2010-03-16 14:35:06

标签: silverlight windows-phone-7

我在下面的代码中尝试将图像从Web加载到Image控件中,当我运行它时,我在给定的行上出现错误,不允许网络访问:

private void button1_Click(object sender, RoutedEventArgs e)
        {
            WebClient webClientImgDownloader = new WebClient();
            webClientImgDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
            webClientImgDownloader.OpenReadAsync(new Uri("http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif", UriKind.Absolute));
        }

        void webClientImgDownloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            BitmapImage bitmap = new BitmapImage();
            bitmap.SetSource(e.Result); // ERROR HERE!
            image1.Source = bitmap;
        }

适用于Windows Phone 7的Silverlight

4 个答案:

答案 0 :(得分:12)

尝试使用WebClient下载内容时,需要在源服务器上提供客户端访问策略文件。对于图像,您可以通过以下方式避免此要求: -

private void button1_Click(object sender, RoutedEventArgs e)
{
    Uri uri = new Uri("http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif", UriKind.Absolute)
    image1.Source = new BitmapImage(uri);
}

答案 1 :(得分:3)

我看到您正在从Dilbert.com检索该网站的网站是否有跨域策略文件?

答案 2 :(得分:1)

Silverlight不支持仅支持GIF的JPG,所以我写道:

www.lenniedevilliers.net/displaygif.aspx?link = http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/80000/5000/100/85108/85108.strip.print.gif

displaygif.aspx页面将GIF转换为JPG。

答案 3 :(得分:0)

你能给我们完整的异常堆栈跟踪吗?错误可能是您的手机模拟器没有互联网访问权限,或者它可能是dilbert服务器上的图像,不允许匿名请求不是来自他们的网站...所以对解决方案的指导会有所不同:-)