zoukankan      html  css  js  c++  java
  • gdi+ 中发生一般性错误 wpf解决方法

    错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下:

    而加载的关键代码如下面:

                            pictureBox_UserPortrait.Load(fileName);
    

      然后更换头像时,在选择完新的头像后进行覆盖保存时就出现了gdi+ 中发生一般性错误,具体的代码如下:

           bitmap300.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
    

      查来查去,是因为pictureBox控件的Load方法是使用文件的句柄,就是该文件会处于锁定状态,任何的修改都会被禁止,那么我就在保存前调用

    pictureBox_UserPortrait.Image = null;
    

      想着先把图片进行卸载掉,在进行存储,结果还是失败了,但是该问题在winform版本的程序中没有问题。

    既然是句柄被占用,又不能提前卸载,所以就图个简洁的做法,各位道友如果有更好的方法,一定要留言啊,

    pictureBox_UserPortrait.Image = new Bitmap(new System.IO.MemoryStream(File.ReadAllBytes(fileName)));
    

      先把文件的所有内容加载进数据流,然后生成新的bitmap对象,然后就完全的释放文件句柄资源了。

  • 相关阅读:
    POJ 3672 水题......
    POJ 3279 枚举?
    STL
    241. Different Ways to Add Parentheses
    282. Expression Add Operators
    169. Majority Element
    Weekly Contest 121
    927. Three Equal Parts
    910. Smallest Range II
    921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/dathlin/p/7668535.html
Copyright © 2011-2022 走看看