Что может вызвать исключение ArgumentException при обновлении PictureBox?

Решив попробовать AForgeдля работы с видео и изображениями, я попытался реализовать эту простую демонстрацию:

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());, но верхняя часть трассировки стека выглядит так:

  • в System.Drawing.Image.get_Width() в System.Drawing.Image .get_Size()
  • в System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(режим PictureBoxSizeMode)
  • в System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)

Не уверен, что это актуально, но Атрибут ParamNameисключения имеет значение null. Я попытался обернуть назначение изображения в блок try...catch, но это не помогло. Я также проверил, чтобы перед назначением изображение не было нулевым. Я также проверил наличие ненулевых изображений, но размером 0x0.

Что я сделал не так? Кто-нибудь может предложить обходной путь?

5
задан Tom Wright 4 April 2012 в 16:15
поделиться