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次就提示内存不足 软件重启或者电脑重启之后都是一样的结果。麻烦大神们给点提示,小弟在此先谢谢啦