Po postanowił spróbować AForge wideo i obrazowania rzeczy, starałem się wdrożyć this simple demo:Co może spowodować wyjątek ArgumentException podczas aktualizowania 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;
}
Problemem jest to, że zawsze uzyskać ArgumentException
, choć nie zawsze zdarza się od razu. To wyskakuje na Application.Run(new Main());
, ale górna część stacktrace wygląda następująco:
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)
Nie wiem, czy to jest istotne, ale atrybut ParamName
wyjątek ma wartość null. Próbowałem owijać obrazek przy próbie ... catch block, ale to nie pomogło. Sprawdziłem również, aby upewnić się, że obraz nie jest pusty przed przypisaniem. Sprawdziłem również pod kątem nie-zerowych obrazów, ale o rozmiarach 0x0.
Co zrobiłem źle? Czy ktoś może zaproponować obejście tego problemu?
Co to jest wiadomość w wyjątku? –
@DavidNelson dobre pytanie: "Parametr jest nieprawidłowy." –
Jaka jest wysokość i szerokość obiektu eventArgs.Frame po ustawieniu? –