Después de haber decidido probar AForge para vídeo y material de imagen, he tratado de poner en práctica this simple demo:¿Qué podría causar una excepción ArgumentException al actualizar un 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;
}
El problema es que siempre me sale un ArgumentException
, aunque no siempre ocurre de inmediato. Que aparece en Application.Run(new Main());
, pero la parte superior de la StackTrace se ve así:
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)
No estoy seguro si esto es relevante, pero el atributo ParamName
de la la excepción es nula. He intentado ajustar la asignación de imágenes en un intento ... atrapar bloque, pero esto no ayudó. También revisé para asegurarme de que la imagen no sea nula antes de la asignación. También he comprobado imágenes que no son nulas, pero de tamaño 0x0.
¿Qué he hecho mal? ¿Alguien puede sugerir una solución alternativa?
¿Cuál es el mensaje en la excepción? –
@DavidNelson buena pregunta: "El parámetro no es válido". –
¿Cuál es la altura y el ancho de eventArgs.Frame cuando lo configura? –