| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1081 人关注过本帖
标题:C# graphics图像复制时提示内存不足
只看楼主 加入收藏
shiweicl1314
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-25
收藏
 问题点数:0 回复次数:3 
C# graphics图像复制时提示内存不足
我使用graphics类的copyformsreen方法从屏幕复制数据到bitmap位图 重复复制约9920次时总是提示内存不足  我实际查看了软件使用的内存在30M,下面是程序
do
                {
                    t1 = GetTickCount();
                    g.CopyFromScreen(fcLED.pPt, pt, rt);
                    ((Form1)(Form1.fcLED.wF1)).panel1.CreateGraphics().DrawImage(fcLED.bMap, x, 1);
                    bData = fcLED.bMap.LockBits(new Rectangle(pt, rt), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
                    Marshal.Copy(bData.Scan0, fcLED.pBuf, 0, GetScreenMenu.fcLED.pWidth * GetScreenMenu.fcLED.pHeight);            
                    
                    mbw.Write((byte)(0x4c));
                    for (int i = 0; i < fcLED.pBuf.Length; i++) mbw.Write(fcLED.pBuf[i]);            
                    fcLED.bMap.UnlockBits(bData);

                    frames++;
                    Form1.fcLED.屏幕捕捉.GetScreenMenu.label2.Text = "Frames:" + frames.ToString();
                    while (fcLED.Buttons == bPAUSE) Thread.Sleep(100);

                    t2 = GetTickCount();

                    t = fps - (t2 - t1);
                    if ((t > 0) && (t < fps)) Thread.Sleep(t);

                } while (fcLED.Buttons != bSTOP);


当我按下窗体的停止按钮时程序才会退出循环结束
经过我的排查我在循环中的所有语句都注视后发现
g.CopyFromScreen(fcLED.pPt, pt, rt);
就是这句语句重复约9920次后程序就会提示内存不足, 这条语句是从屏幕的一片区域重复的复制数据到bitmap位图中,我前面初始化了一个bitmap类 然后用bitmap创建的graphics,之后开始不停的复制数据到bitmap中  每次都是循环约9920次就提示内存不足  软件重启或者电脑重启之后都是一样的结果。麻烦大神们给点提示,小弟在此先谢谢啦
搜索更多相关主题的帖子: 内存 
2013-01-13 15:31
dong73
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2013-1-24
收藏
得分:0 
是不是超出绘制区域的范围了? 或者是图像有损坏 ? 内存不足的原因这两个也是罪魁祸首
2013-01-24 17:30
hecenbe
Rank: 2
等 级:论坛游民
帖 子:4
专家分:12
注 册:2009-8-25
收藏
得分:0 
CreateGraphics的调用都木有Dispose啦~~~
2013-02-01 14:56
moridiansha
Rank: 6Rank: 6
来 自:承德
等 级:侠之大者
威 望:4
帖 子:254
专家分:417
注 册:2009-10-21
收藏
得分:0 
你确定只用了30M?要把该释放的资源释放掉

www.qysy.tk
2013-02-06 08:23
快速回复:C# graphics图像复制时提示内存不足
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011452 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved