растровое изображение повреждено при использовании в PaintEventArgs.DrawImage - PullRequest
0 голосов
/ 25 сентября 2018

Моя программа состоит из двух частей, в первом разделе мы создаем растровое изображение примерно так:

frameBitmap = new Bitmap(destWidth, destHeight, pConvertedFrame->linesize[0], PixelFormat.Format32bppPArgb, new IntPtr(pConvertedFrame->data_0));

эта часть работает хорошо, и здесь нет никаких проблем.

в секундуsection, то есть в функции события «OnPaint» для моего «userControl», будет использоваться 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);

Ну, теперь мой вопрос: почему?Я решил это, но я не нашел ни своего решения, ни своей проблемы, и я решил это совершенно креативно.но я не знаю, как это случилось;))

Спасибо за любую помощь.

...