Исключение System.OverflowException если запускаю из Visual Studio - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, тут такое дело, подключил либу AForge.Video.VFW для записи видео. Компилирую, нажимаю "Запись", выдает исключение System.OverflowException. Если программу запускать не из под Visual Studio, а просто exe из папки то все ок, запись идет. В чем может быть проблема? Я так понимаю какая-то проблема с разрядностью, но не понимаю почему.. ведь просто из папки exe запускается как надо. Да и менял я на х86 и на х64, не помогает.. Код ошибки под спойлером
Листинг программы
  1. Bitmap bmp = Properties.Resources.image;
  2. ...
  3. writer.AddFrame(bmp); public void AddFrame( Bitmap frameImage )
  4. {
  5. lock (sync)
  6. {
  7. // check if AVI file was properly opened
  8. if (buffer == IntPtr.Zero)
  9. throw new System.IO.IOException("AVI file should be successfully opened before writing.");
  10. // check image dimension
  11. if ((frameImage.Width != width) || (frameImage.Height != height))
  12. throw new ArgumentException("Bitmap size must be of the same as video size, which was specified on opening video file.");
  13. // lock bitmap data
  14. BitmapData imageData = frameImage.LockBits(
  15. new Rectangle(0, 0, width, height),
  16. ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
  17. // copy image data
  18. int srcStride = imageData.Stride;
  19. int dstStride = stride;
  20. int src = imageData.Scan0.ToInt32() + srcStride * (height - 1); //ОШИБКА ЗДЕСЬ!!!
  21. int dst = buffer.ToInt32();
  22. for (int y = 0; y < height; y++)
  23. {
  24. Win32.memcpy(dst, src, dstStride);
  25. dst += dstStride;
  26. src -= srcStride;
  27. }
  28. // unlock bitmap data
  29. frameImage.UnlockBits(imageData);
  30. // write to stream
  31. if (Win32.AVIStreamWrite(streamCompressed, position, 1, buffer,
  32. stride * height, 0, IntPtr.Zero, IntPtr.Zero) != 0)
  33. throw new VideoException("Failed adding frame.");
  34. position++;
  35. }
  36. } int src = imageData.Scan0.ToInt32() + srcStride * (height - 1);

Решение задачи: «Исключение System.OverflowException если запускаю из Visual Studio»

textual
Листинг программы
  1. IntPtr src = imageData.Scan0 + srcStride * (height - 1);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут