对于image对象总是要dispose()                Image img = Image.FromFile(ofg.FileName);
                bmp = new Bitmap(img);
                if (pictureBox1.Width < bmp.Width || pictureBox1.Height < bmp.Height)
                    zoom = Math.Min((float)pictureBox1.Width / (float)bmp.Width, (float)pictureBox1.Height / (float)bmp.Height);
                else
                    zoom = 1.0f;
                img.Dispose();
                IsLoadBmp = true;
                pictureBox1.Refresh();]
这里转化成bitmap了,我要动态添加很多图片,怎么销毁?bitmap的就不用销毁了?

解决方案 »

  1.   

    就是你用的Dispose
    System.Drawing.Image img = System.Drawing.Image.FromFile(LotteryHelper.BackgroundImage);
                    System.Drawing.Image bmp = new System.Drawing.Bitmap(img);
                    img.Dispose();
                    this.BackgroundImage = bmp;
      

  2.   

    bmp不需要销毁吗?我调试的时候不销毁图片还是占据内存啊
      

  3.   

    Bitmap继承自Image,要销毁都要调用它的Dipose()方法,然后调用GC.Collect()的,不然内存一下不会释放
      

  4.   

    额。。我的想法是把我要动态添加的图片放进Arraylist里面,在程序结束的时候统一dispose(),可是我看内存的使用,这句话添加不添加,没有改变
      

  5.   

    dim bmp as new bitmap("c:\1.bmp")循环显示:
    for.....
    if bmp isnot nothing then bmp.dispose '每次使用前先释放旧图片
    bmp=new bitm("c:\1.bmp")
    next