bmPhoto是成员变量, 最后一句
pictureBoxDynamicView.Image = bmPhoto;
将其绑定到图片控件中, 注意这里不会复制一份图片, 只是绑定显示而执行前面的代码
if (bmPhoto != null) bmPhoto.Dispose();
时其实已经把这个图片销毁了, 也就是将pictureBoxDynamicView.Image销毁了
后面的代码再保存到文件时自然就无法得到预期的效果.应该把
if (bmPhoto != null) bmPhoto.Dispose();
删除,
修改后面的
pictureBoxDynamicView.Image = bmPhoto;

using(var tobedispose = pictureBoxDynamicView.Image)
{
pictureBoxDynamicView.Image = bmPhoto;
}

解决方案 »

  1.   

    不好意思,我用注释掉的部分时,是把if (bmPhoto != null) bmPhoto.Dispose();给注释掉的,如果加上去那肯定是不对了。
    var tobedispose 是起什么作用?
      

  2.   

    不好意思,我用注释掉的部分时,是把if (bmPhoto != null) bmPhoto.Dispose();给注释掉的,如果加上去那肯定是不对了。
    var tobedispose 是起什么作用?将pictureBoxDynamicView.Image旧值保存到tobedispose变量, 超出using块后会自动调用tobedispose.Dispose(), 如果你不知道var和using是什么意思应该补充一下基础知识了
      

  3.   

    不好意思,我用注释掉的部分时,是把if (bmPhoto != null) bmPhoto.Dispose();给注释掉的,如果加上去那肯定是不对了。
    var tobedispose 是起什么作用?将pictureBoxDynamicView.Image旧值保存到tobedispose变量, 超出using块后会自动调用tobedispose.Dispose(), 如果你不知道var和using是什么意思应该补充一下基础知识了
    不好意思,我知道using块的使用,不过平时不怎么喜欢用,还是用Dispose的多。