// Save the camera image onto disk and remove the handler from the ImageUpdated event protected void SaveImageOnceEvent(Object sender, ImageUpdateEventArgs e) { // Reset stream position if the image has been read (if the any other event handler has been called before this) e.Image.Position = 0; // Same logic as in ImageUpdateEvent() for (var i = 0; i < CameraHandler.Length; i++) { if (CameraHandler[i].Equals(sender)) { // Remove the event handler (self) to save only once CameraHandler[i].ImageUpdated -= SaveImageOnceEvent; try { var fs = new FileStream( (UISettings.SwapImageSources == Convert.ToBoolean(i)) ? UISettings.SaveImageLeft : UISettings.SaveImageRight, FileMode.Create, FileAccess.Write ); e.Image.CopyTo(fs); fs.Close(); } catch (Exception ex) { ShowMessage(ex.Message); } } } }
// A CameraHandler has an updated image for us protected void ImageUpdateEvent(Object sender, ImageUpdateEventArgs e) { // Reset stream position if the image has been read (if the any other event handler has been called before this) e.Image.Position = 0; // Check which CameraHandler gave us the image to update the right image plane (depending on the swap image toggle) for (var i = 0; i < CameraHandler.Length; i++) { if (CameraHandler[i].Equals(sender)) { ImagePlane[(UISettings.SwapImageSources == Convert.ToBoolean(i) ? 0 : 1)].SetImage(e.Image); } } }