首页 新闻 搜索 专区 学院

关于BMP内存溢出

0
悬赏园豆:20 [已解决问题] 解决于 2014-02-28 17:02

各位大侠:
   本人自己编写了一个绘图控件,主要功能是在一张BMP上面画图并显示给用户,因此每个控件实例维护着BMP文件,当控件的实例比较少时,没有问题,但当控件达数十个之多时,出现内存溢出,导致无法创建BMP实例,抛出异常。请问如何解决!
   在窗口重绘时我虽然创建新的BMP,但是我强制调用了GC.Collect();应该不是内存释放的问题。

hmqr的主页 hmqr | 初学一级 | 园豆:147
提问于:2014-02-20 22:06
< >
分享
最佳答案
1

paste your code

收获园豆:20
空明流光 | 初学一级 |园豆:20 | 2014-02-21 20:43

 private void LineDrawer_Paint(object sender, PaintEventArgs e)  //重绘事件
        {
                this.DrawMap();
        }

        private void DrawMap()    //画图主程序
        {
            map = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);
            gs = Graphics.FromImage(map);
            gs.Clear(Color.White);
            画图...
            gs.Dispose();
            map=null;
             GC.Collect();
        }

hmqr | 园豆:147 (初学一级) | 2014-02-21 21:53

@hmqr: 贴的代码实在太少了,没办法找问题的

空明流光 | 园豆:20 (初学一级) | 2014-02-22 15:18
其他回答(1)
0

估计是没有办法了,我自己把我其中一个地方创建测试DC的地方直接从pictureBox获取,减小了不少的内存分配,问题初步解决了

hmqr | 园豆:147 (初学一级) | 2014-02-28 17:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册