我如何在图片框中处理()图片?

时间:2020-07-07 20:48:21

标签: c# winforms

我有如下代码:

Bitmap b = new Bitmap(...); //doesn't matter how this image is constructed
pictureBox1.Image = b;
//b.Dispose() placed here crashes the application and so does "using" if used on the declaration of 'b'

由于在C#中,您应该处置所有IDisposable,因此需要在某个时刻处置此图像。看来属性PictureBox.Image只能进行浅拷贝,因此在整个图像停留在框内的整个过程中,我都需要使对象保持活动状态(又不是该对象的Dispose())。如果以后再更改框中的图像:

pictureBox1.Image = b2;

该物业会为我处置吗?还是我应该手动进行:

Image im = pictureBox1.Image;
pictureBox1.Image = b2;
im.Dispose();

1 个答案:

答案 0 :(得分:1)

是的...如果您更改.Image属性,则以前的图像将被自动清除。

如果您完全确定不再需要以前的图像,可以将其分配给一个临时变量,将一个新的图像分配给您的图片框,然后处置temp变量:

Image tmp = pictureBox1.Image;
pictureBox1.Image = b2;
tmp.Dispose();