我的程序分为两部分,在第一部分中,我们创建一个如下的位图:
frameBitmap = new Bitmap(destWidth, destHeight, pConvertedFrame->linesize[0], PixelFormat.Format32bppPArgb, new IntPtr(pConvertedFrame->data_0));
这部分效果很好,这里没有任何问题。
在第二部分,即我的“ userControl”的“ OnPaint”事件函数中,frameBitmap的用法如下:
e.Graphics.DrawImage(frameBitmap, drawArea, x, y, width, height, GraphicsUnit.Pixel);
我必须告诉我,我的控件会刷新一些时间。此属性支持“ OnPaint”:
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
和try{}catch{}
。
但有时会因该异常而损坏:
“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”
我知道“ frameBitmap”已损坏。
好吧,我已使用此解决方案对其进行了修复;相反,第一部分使用以下代码:
Bitmap temp = new Bitmap(destWidth, destHeight, pConvertedFrame->linesize[0], PixelFormat.Format32bppPArgb, new IntPtr(pConvertedFrame->data_0));
frameBitmap = new Bitmap(temp);
好吧,现在我的问题是:为什么? 我已经解决了,但是找不到像我的解决方案或问题一样的东西,而且我觉得它非常有创意。但我不知道这是怎么发生的;))
感谢您的帮助。