Camera Control

  • 3 minutes to read

The CameraControl displays a video stream from a video capture device (a webcam) and allows you to save snapshots.

Camera Control - Amanda

Select a Capture Device

The Camera Control automatically detects video recording devices and starts streaming data. To disable this feature, disable the CameraControl.AutoStartDefaultDevice property.

The Camera Control creates a CameraDevice object for each recording device. The active webcam's CameraDevice object is assigned to the CameraControl.Device property. To manually change the active camera, do the following:

The example below illustrates how to switch to the first available Logitech webcam manually.


private void button_Click(object sender, EventArgs e) {
     CameraDeviceInfo a4camInfo = CameraControl.GetDevices().Find(x => x.Name.Contains("Logitech"));
     cameraControl1.Start(CameraControl.GetDevice(a4camInfo));
 }
NOTE

A Camera Control cannot receive data from a webcam which is already streaming to another control or "Take Picture" dialog.

Settings Dialog

If the CameraControl.ShowSettingsButton property is enabled, the Camera Control shows a Settings button when a user hovers the mouse pointer over the client area.

CameraControl - Settings button

Clicking this button invokes the Camera Settings dialog that allows you to choose the active camera and adjust video settings.

CameraControl_CameraSettings

To invoke this dialog from code, call the CameraControl.ShowSettingsForm method. You can also access the current webcam's video quality settings through the CameraControl.VideoSettings property.

IMPORTANT
  • Video settings are stored in the recording device. Changing these settings in the Camera Control's Settings dialog can affect the quality of videos captured in other applications.
  • The type of webcam determines the video quality settings (and their maximum\minimum values) available in the Settings Dialog.

Operate the Video Stream and Take Snapshots

  • CameraControl.Start - starts transmitting video data from the selected webcam.
  • CameraControl.Stop - terminates streaming. A Camera Control that streams nothing displays the following message:

    CameraControl_DeviceNotFoundString

  • CameraControl.TakeSnapshot - saves the displayed frame as a 32-bit Bitmap object. Call the Bitmap.Save() method to save this bitmap to a local storage or stream.

    
    private void simpleButton1_Click(object sender, EventArgs e) {
        string filePath = Path.Combine(@"D:\Snapshots\", 
            DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "--" +
            DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString() +
            ".jpg");
        cameraControl1.TakeSnapshot().Save(filePath, ImageFormat.Jpeg);
    }
    

"Take Picture" Dialog

If you need the Camera Control to take pictures, use the Take Picture Dialog instead. This is a modal dialog with an embedded Camera Control and the "Capture"_"Save"\"Cancel"_ buttons.

CameraControl - Capture Dialog New

To invoke this dialog from code, create a new DevExpress.XtraEditors.Camera.TakePictureDialog class instance and call its ShowDialog method. The dialog returns the captured bitmap when a user clicks "Save".


using DevExpress.XtraEditors.Camera;

TakePictureDialog d = new TakePictureDialog();
if(d.ShowDialog() == System.Windows.Forms.DialogResult.OK){
    Image i = d.Image;
    i.Save("C:\\snapshot.bmp");
}