хорошо, поэтому у меня есть две видеокамеры, которые использует мое программное обеспечение. Первый - это компьютерная веб-камера. когда я подключаюсь и запускаю этот код:
Bitmap currentFrame = videoSourcePlayer.GetCurrentVideoFrame();
Graphics g = Graphics.FromImage(currentFrame);
g.DrawImage(currentFrame, videoSourcePlayer.imagex, videoSourcePlayer.imagey, videoSourcePlayer.imgWidth, videoSourcePlayer.imgHeight);
pictureBox1.Image = currentFrame;
return currentFrame;
вебкамера работает нормально. Я могу скопировать мой зум и панорамирование, просто отлично.
но когда я подключаюсь к другой камере и запускаю тот же код, я получаю эту ошибку:
HResult = 0x80131500
Сообщение = Графический объект не может быть создан из изображения, имеющего индексированный формат пикселей.
Источник = System.Drawing
Трассировки стека:
в System.Drawing.Graphics.FromImage (изображение)
поэтому я попробовал этот код:
private Bitmap CaptureScreen()
{
Bitmap originalBmp = videoSourcePlayer.GetCurrentVideoFrame();
// Create a blank bitmap with the same dimensions
Bitmap tempBitmap = new Bitmap(originalBmp.Width, originalBmp.Height);
// From this bitmap, the graphics can be obtained, because it has the right PixelFormat
using (Graphics g = Graphics.FromImage(tempBitmap))
{
g.DrawImage(originalBmp, videoSourcePlayer.imagex, videoSourcePlayer.imagey, videoSourcePlayer.imgWidth, videoSourcePlayer.imgHeight);
pictureBox1.Image = originalBmp;
return originalBmp;
}
}
этот код исправляет ошибку времени выполнения, я получаю, но избавляюсь от моего масштабирования и панорамирования.
Я не знаю почему?
но у меня есть функция масштабирования и панорамирования, которая работает с первым блоком кода, но не со вторым.
как исправить объект A Graphics, который нельзя создать из изображения с ошибкой во время выполнения в формате индексированного пикселя, но при этом сохранить масштаб и панорамирование?