【问题标题】:Windows Phone 7 download image and display itWindows Phone 7 下载图像并显示它
【发布时间】:2012-12-04 10:37:05
【问题描述】:

我是 windows phone 平台的新手,我正在尝试构建一个简单的应用程序,它从文本框中读取图像 url,然后单击下载按钮将此图像下载到手机内存中,然后将其显示在图像控制。

这段代码是在用户点击下载按钮时编写的:

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

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

它给出了一个“未指定的错误”异常。如何解决?或者有人知道更好的方法吗?

另外一个问题,e.Result 的本质是什么?它是作为字符串下载的图像内容还是某物的路径或什么?

谢谢

【问题讨论】:

    标签: c# windows-phone-7 filestream


    【解决方案1】:

    图片是二进制内容,而不是字符串。您必须使用WebClient.OpenReadAsync(而不是DownloadStringAsync),或者直接将您的网址设置为BitmapImage 的来源:

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

    【讨论】:

    • 但这似乎是我从网上读取图像而不是将其保存到手机内存中。还是您的意思是我可以保存从 e.Result 获得的流?
    • “内存”不明确。你指的是内存还是内存?甚至对于存储,您可以将图片保存到隔离存储或图片中心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多