Решив попробовать AForge для видео и прочее изображений, я попытался реализовать this simple demo:Что может вызвать исключение ArgumentException при обновлении PictureBox?
private void Main_Load(object sender, EventArgs e)
{
// enumerate video devices
FilterInfoCollection videoDevices = new FilterInfoCollection(
FilterCategory.VideoInputDevice);
// create video source
VideoCaptureDevice videoSource = new VideoCaptureDevice(
videoDevices[0].MonikerString);
// set NewFrame event handler
videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
// start the video source
videoSource.Start();
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
this.pictureBox1.Image = eventArgs.Frame;
}
Проблема заключается в том, что я всегда получаю ArgumentException
, хотя и не всегда происходит сразу. Она выскакивает на Application.Run(new Main());
, но в верхней части StackTrace выглядит следующим образом:
at System.Drawing.Image.get_Width() at System.Drawing.Image.get_Size()
at System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(PictureBoxSizeMode mode)
at System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
Не уверен, если это уместно, но атрибут ParamName
Исключение составляет null. Я попытался объединить назначение изображения в блок try ... catch, но это не помогло. Я также проверил, чтобы изображение не было нулевым до назначения. Я также проверил для изображений, отличных от нуля, но размером 0x0.
Что я сделал не так? Может ли кто-нибудь предложить обходной путь?
Что такое сообщение в исключении? –
@DavidNelson хороший вопрос: «Параметр недействителен». –
Что такое высота и ширина eventArgs.Frame, когда вы его устанавливаете? –