双缓存绘制所占的内存使用惊人的问题

在写一个控件的时候,因绘制的工作比较大,为避免闪烁,自然是使用双缓存。
Bitmap m_bmpOffscreen = null;

            Graphics gxOff; 
//Offscreen graphics
            m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
            gxOff 
= Graphics.FromImage(m_bmpOffscreen);
            gxOff.Clear(
this.BackColor);
//TODO:添加所有绘制工作,都是绘制在gxOff对象上

//绘制到前台
e.Graphics.DrawImage(m_bmpOffscreen, 00);

没想到,当用户不断引发控件的绘制工作是,内存容量不断增加,最大的内容使用在五、六百兆也是常事。
想一下,回收一下gxOff和m_bmpOffscreen吧。于是控件就能控制在50兆之内。稍做一下尝试,发现gxOff是内存的主要使用者,回收gxOff的效果比回收m_bmpOffscreen明显得好。
Bitmap m_bmpOffscreen = null;

Graphics gxOff; 
//Offscreen graphics
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
gxOff 
= Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(
this.BackColor);
//TODO:添加所有绘制工作,都是绘制在gxOff对象上

//绘制到前台
e.Graphics.DrawImage(m_bmpOffscreen, 00);
m_bmpOffscreen.Dispose();
//效果不明显        
gxOff.Dispose();//回收效果相当明显
posted @ 2006-06-04 21:34  生命体验之kevin-Y  阅读(764)  评论(2编辑  收藏  举报