关于c#:在GDI错误一般形式

In the GDI + error general form

我有目录,在目录 image background.jpg

在早期的工作中,我在背景中加载了这张图片

1
2
3
ImageBrush imgBrush = new ImageBrush();
imgBrush.ImageSource = new BitmapImage(new Uri("images/background.jpg", UriKind.Relative));
border.Background = imgBrush;

在这之后的模式,我需要改变这个形象。
我从服务器上摇动它,尝试在 images/background.jpg 中写入,但出现异常

"In the GDI error general form" - 这是俄语的翻译。

获取服务器图像并保存到计算机

HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(request);
loHttp.Method = "GET";
loHttp.ProtocolVersion = HttpVersion.Version11;
HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();

1
2
3
4
5
6
7
8
9
10
11
StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream());
System.Drawing.Image webImage = System.Drawing.Image.FromStream(loWebResponse.GetResponseStream());
try
{
    webImage.Save("images/background.jpg");//this exception

    ImageBrush imgBrush = new ImageBrush();
    imgBrush.ImageSource = new BitmapImage(new Uri("images/background.jpg", UriKind.Relative));
    parent.GetSetBorder.Background = imgBrush;
}
catch {  }

我该怎么办?


是的,此代码只能运行一次。调用 Save() 后,您就锁定了文件。再次保存会炸弹。您必须在调用 Save() 后调用 Dispose(),以便正确处理位图并释放文件锁。

在一次性类对象上不使用 using 语句或调用 Dispose() 是您在 .NET 中经常遇到的问题。但很少在位图上。


您保存到的路径 (images/background.jpg) 指向您的本地计算机,当路径不存在时可能会发生此错误。

尝试写入 webImage.Save("c:\\\\background.jpg"); 或任何其他已知存在的路径以查看错误是否仍然存在。