本文介绍了C#System.OutOfMemoryException:'内存不足'。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我正在使用AForge的videoSourcePlayer。现在我不得不为它添加一个函数,因为GetCurrentVideoFrame()不能正常工作我需要的原因。所以我创建一个名为GetCurrent()的函数,它按照我想要的方式工作。我遇到的问题是当我使用它代替GetCurrentVideoFrame()时,我得到一个System.OutOfMemoryException:'内存不足。'例外,我没有理想的原因。这是我的代码: Bitmap getPic2(int i2) {位图bmp = null; 位图tempB = null; if(endIRList [i2] .X> videoSourcePlayer.Width - 1) endIRList [i2] = new System.Drawing.Point(videoSourcePlayer.Width - 1,endIRList [i2] .Y); if(endIRList [i2] .Y> videoSourcePlayer.Height - 1) endIRList [i2] = new System.Drawing.Point(endIRList [i2] .X,videoSourcePlayer.Height - 1); if(stIRList [i2] .X> = 0&& stIRList [i2] .Y> = 0&& endIRList [i2] .X< videoSourcePlayer.Width&& endIRList [i2] .Y< videoSourcePlayer.Height) { if(endIRList [i2] .X - stIRList [i2] .X> 0&& endIRList [i2] .Y - stIRList [i2] .Y> 0) { bmp = videoSourcePlayer.GetCurrent(); System.Drawing.Image iOld = p2.Image; tempB = bmp.Clone(new Rectangle(stIRList [i2] .X,stIRList [i2] .Y,endIRList [i2] .X - stIRList [i2] .X,endIRList [i2] .Y - stIRList [ 12] .Y),bmp.PixelFormat); if(iOld!= null) { iOld.Dispose(); iOld = null; } } } pictureBox1.Image = this.videoSourcePlayer.GetCurrent(); TestPicBox.Image = tempB; 返回tempB; } 我遇到的问题是: tempB = bmp 。 克隆 ( new Rectangle ( stIRList [ i2 ]。 X , stIRList [ i2 ]。 Y , endIRList [ i2 ]。 X - stIRList [ i2 ]。 X , endIRList [ i2 ]。 Y - stIRList [ i2 ]。 Y ), bmp 。 PixelFormat ); 解决方案 I am using videoSourcePlayer from AForge. now I had to add a function to it because GetCurrentVideoFrame( ) was not working the why I needed. So I make a function called GetCurrent() and it work the way I wanted. The problem I am having is when I used it in place of GetCurrentVideoFrame( ) I get a System.OutOfMemoryException: 'Out of memory.' Exception and I have no Ideal why. here is my code :Bitmap getPic2(int i2) { Bitmap bmp = null; Bitmap tempB = null; if (endIRList[i2].X > videoSourcePlayer.Width - 1) endIRList[i2]= new System.Drawing.Point(videoSourcePlayer.Width - 1, endIRList[i2].Y); if (endIRList[i2].Y > videoSourcePlayer.Height - 1) endIRList[i2] = new System.Drawing.Point(endIRList[i2].X, videoSourcePlayer.Height - 1); if (stIRList[i2].X >= 0 && stIRList[i2].Y >= 0 && endIRList[i2].X < videoSourcePlayer.Width && endIRList[i2].Y < videoSourcePlayer.Height) { if (endIRList[i2].X - stIRList[i2].X > 0 && endIRList[i2].Y - stIRList[i2].Y > 0) { bmp = videoSourcePlayer.GetCurrent(); System.Drawing.Image iOld = p2.Image; tempB = bmp.Clone(new Rectangle(stIRList[i2].X, stIRList[i2].Y, endIRList[i2].X - stIRList[i2].X, endIRList[i2].Y - stIRList[i2].Y),bmp.PixelFormat); if (iOld != null) { iOld.Dispose(); iOld = null; } } } pictureBox1.Image =this.videoSourcePlayer.GetCurrent(); TestPicBox.Image = tempB; return tempB; }the problem I am having is at:tempB = bmp.Clone(new Rectangle(stIRList[i2].X, stIRList[i2].Y, endIRList[i2].X - stIRList[i2].X, endIRList[i2].Y - stIRList[i2].Y),bmp.PixelFormat); 解决方案 这篇关于C#System.OutOfMemoryException:'内存不足'。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-09 18:11