Dopo aver deciso di provare AForge per video e roba di imaging, ho cercato di implementare this simple demo:Cosa potrebbe causare un'eccezione Argument quando si aggiorna 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;
}
Il problema è che ottengo sempre un ArgumentException
, anche se non sempre accade subito. Si apre il Application.Run(new Main());
, ma la parte superiore del stacktrace si presenta così:
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)
Non so se questo è rilevante, ma l'attributo ParamName
del l'eccezione è nulla. Ho provato a racchiudere l'assegnazione dell'immagine in un try ... catch block, ma questo non ha aiutato. Ho anche verificato che l'immagine non sia nulla prima dell'assegnazione. Ho anche controllato le immagini non nulle, ma 0x0.
Cosa ho fatto di sbagliato? Qualcuno può suggerire una soluzione alternativa?
Qual è il messaggio nell'eccezione? –
@DavidNelson buona domanda: "Il parametro non è valido." –
Qual è l'altezza e la larghezza di eventArgs.Frame quando lo si imposta? –