如何从URL获取图片到pictureBox? (Windows Mobile)

在使用Compact Framework时,从URL获取图像的最佳方法是什么以及如何?

我用Google搜索,但找不到任何合适的答案。

我找到的东西就是这个(用它做了一个函数):

public Bitmap getImageFromUrl() { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(this.SImageUrl); request.Timeout = 5000; // 5 seconds in milliseconds request.ReadWriteTimeout = 20000; // allow up to 20 seconds to elapse HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream ms = response.GetResponseStream(); Bitmap imageFromUrl; using (MemoryStream ms2 = new MemoryStream()) { int bytes = 0; byte[] temp = new byte[4096]; while ((bytes = ms.Read(temp, 0, temp.Length)) != 0) ms2.Write(temp, 0, bytes); imageFromUrl = new Bitmap(ms2); } return imageFromUrl; } 

但它不会在pictureBox中显示任何图像。 有任何想法吗?

谢谢我提前

我现在找到了更好的东西,但感谢Steve Danner的回答。 这是我的解决方案:

 public Bitmap getImageFromURL(String sURL) { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(sURL); myRequest.Method = "GET"; HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream()); myResponse.Close(); return bmp; } 

由于你有一个长度为4096的静态声明缓冲区,当它到达缓冲区的末尾时,这一行:

 while ((bytes = ms.Read(temp, 0, temp.Length)) != 0) 

试图读取4096字节,当可能大大减少。 将你的循环改为这样的东西。

 using (MemoryStream ms2 = new MemoryStream()) { int bytes = 0; while (true) { int byteLen = ms.Length - ms.Position >= 4096 ? 4096 : ms.Length - ms.Position; byte[] temp = new byte[byteLen]; bytes = ms.Read(temp, 0, byteLen); ms2.Write(temp, 0, bytes); imageFromUrl = new Bitmap(ms2); if (ms.Position == ms.Length) break; }