在PaintEventArgs.DrawImage

时间:2018-09-25 07:52:25

标签: c# bitmap drawimage corrupt

我的程序分为两部分,在第一部分中,我们创建一个如下的位图:

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);

好吧,现在我的问题是:为什么? 我已经解决了,但是找不到像我的解决方案或问题一样的东西,而且我觉得它非常有创意。但我不知道这是怎么发生的;))

感谢您的帮助。

0 个答案:

没有答案