VintaSoft Imaging .NET SDK 15.1: Documentation for .NET developer
Vintasoft.Imaging.Media Namespace / ImageCaptureSource Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
ImageCaptureSource Class
In This Topic
Allows to capture images from image capture device.
Object Model
ImageCaptureDevice ImageCaptureSource
Syntax
'Declaration

Public NotInheritable Class ImageCaptureSource

public sealed class ImageCaptureSource

Example

This C#/VB.NET code shows how to display captured images from several cameras on several forms:


''' <summary>
''' Class that implements image capturing from camera and previewing of captured images in image viewer.
''' </summary>
Public Class VideoPreview
    ''' <summary>
    ''' Image viewer where captured images must be shown.
    ''' </summary>
    Private _viewer As Vintasoft.Imaging.UI.ImageViewer

    ''' <summary>
    ''' Image capture source.
    ''' </summary>
    Private _captureSource As Vintasoft.Imaging.Media.ImageCaptureSource


    Public Sub New(viewer As Vintasoft.Imaging.UI.ImageViewer, captureDevice As Vintasoft.Imaging.Media.ImageCaptureDevice)
        _viewer = viewer

        _captureSource = New Vintasoft.Imaging.Media.ImageCaptureSource()
        _captureSource.CaptureDevice = captureDevice
        AddHandler _captureSource.CaptureCompleted, New System.EventHandler(Of Vintasoft.Imaging.Media.ImageCaptureCompletedEventArgs)(AddressOf CaptureSource_CaptureCompleted)
    End Sub


    Public Sub Start()
        _captureSource.Start()
        _captureSource.CaptureAsync()
    End Sub

    Public Sub [Stop]()
        _captureSource.[Stop]()
    End Sub

    Private Sub CaptureSource_CaptureCompleted(sender As Object, e As Vintasoft.Imaging.Media.ImageCaptureCompletedEventArgs)
        Dim oldImage As Vintasoft.Imaging.VintasoftImage = _viewer.Image
        _viewer.Image = e.GetCapturedImage()
        If oldImage IsNot Nothing Then
            oldImage.Dispose()
        End If

        If _captureSource.State = Vintasoft.Imaging.Media.ImageCaptureState.Started Then
            _captureSource.CaptureAsync()
        End If
    End Sub
End Class

''' <summary>
''' Form for previewing video (captured images) from camera.
''' </summary>
Public Class VideocamForm
    Inherits System.Windows.Forms.Form
    Private _cameraPreview As VideoPreview


    Public Sub New(device As Vintasoft.Imaging.Media.ImageCaptureDevice)
        ' create image viewer
        Dim viewer As New Vintasoft.Imaging.UI.ImageViewer()
        viewer.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right Or System.Windows.Forms.AnchorStyles.Top
        viewer.Size = New System.Drawing.Size(device.DesiredFormat.Width, device.DesiredFormat.Height)
        viewer.SizeMode = Vintasoft.Imaging.UI.ImageSizeMode.BestFit

        ' set form size and caption
        ClientSize = viewer.Size
        Text = device.FriendlyName

        ' add viewer to form
        Controls.Add(viewer)

        ' create video preview
        _cameraPreview = New VideoPreview(viewer, device)
    End Sub


    Protected Overrides Sub OnShown(e As System.EventArgs)
        MyBase.OnShown(e)

        ' start image capturing
        _cameraPreview.Start()
    End Sub

    Protected Overrides Sub OnClosing(e As System.ComponentModel.CancelEventArgs)
        ' stop image capturing
        _cameraPreview.[Stop]()

        MyBase.OnClosing(e)
    End Sub
End Class

''' <summary>
''' Test for previewing video from all available cameras.
''' </summary>
Public Class VideoPreviewTest
    Public Shared Sub ShowVideoFromAllCameras()
        ' get available capture devices
        Dim availableDevices As System.Collections.ObjectModel.ReadOnlyCollection(Of Vintasoft.Imaging.Media.ImageCaptureDevice) = Vintasoft.Imaging.Media.ImageCaptureDeviceConfiguration.GetCaptureDevices()
        If availableDevices.Count = 0 Then
            Throw New System.InvalidOperationException("No connected devices.")
        End If

        ' set device desired formats
        For Each device As Vintasoft.Imaging.Media.ImageCaptureDevice In availableDevices
            device.DesiredFormat = device.SupportedFormats(0)
        Next

        ' preview video from all available cameras
        For Each device As Vintasoft.Imaging.Media.ImageCaptureDevice In availableDevices
            ' preview video from camera in the first form
            Dim myForm As New VideocamForm(device)
            myForm.Show()

            ' preview video from camera in the second form
            Dim myForm2 As New VideocamForm(device)
            myForm2.Width = myForm2.Width \ 2
            myForm2.Height = myForm2.Height \ 2
            myForm2.Show()
        Next

        ' if is console application
        'Application.Run();
    End Sub

End Class


/// <summary>
/// Class that implements image capturing from camera and previewing of captured images in image viewer.
/// </summary>
public class VideoPreview
{
    /// <summary>
    /// Image viewer where captured images must be shown.
    /// </summary>
    Vintasoft.Imaging.UI.ImageViewer _viewer;
    
    /// <summary>
    /// Image capture source.
    /// </summary>
    Vintasoft.Imaging.Media.ImageCaptureSource _captureSource;


    public VideoPreview(
        Vintasoft.Imaging.UI.ImageViewer viewer, 
        Vintasoft.Imaging.Media.ImageCaptureDevice captureDevice)
    {
        _viewer = viewer;

        _captureSource = new Vintasoft.Imaging.Media.ImageCaptureSource();
        _captureSource.CaptureDevice = captureDevice;
        _captureSource.CaptureCompleted += 
            new System.EventHandler<Vintasoft.Imaging.Media.ImageCaptureCompletedEventArgs>(CaptureSource_CaptureCompleted);
    }
  

    public void Start()
    {
        _captureSource.Start();
        _captureSource.CaptureAsync();
    }

    public void Stop()
    {
        _captureSource.Stop();
    }

    private void CaptureSource_CaptureCompleted(object sender, Vintasoft.Imaging.Media.ImageCaptureCompletedEventArgs e)
    {
        Vintasoft.Imaging.VintasoftImage oldImage = _viewer.Image;
        _viewer.Image = e.GetCapturedImage();
        if (oldImage != null)
            oldImage.Dispose();

        if (_captureSource.State == Vintasoft.Imaging.Media.ImageCaptureState.Started)
            _captureSource.CaptureAsync();
    }
}

/// <summary>
/// Form for previewing video (captured images) from camera.
/// </summary>
public class VideocamForm : System.Windows.Forms.Form
{
    VideoPreview _cameraPreview;


    public VideocamForm(Vintasoft.Imaging.Media.ImageCaptureDevice device)
    {        
        // create image viewer
        Vintasoft.Imaging.UI.ImageViewer viewer = new Vintasoft.Imaging.UI.ImageViewer();
        viewer.Anchor =
            System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left |
            System.Windows.Forms.AnchorStyles.Right | System.Windows.Forms.AnchorStyles.Top;
        viewer.Size =
            new System.Drawing.Size(device.DesiredFormat.Width, device.DesiredFormat.Height);
        viewer.SizeMode = Vintasoft.Imaging.UI.ImageSizeMode.BestFit;

        // set form size and caption
        ClientSize = viewer.Size;
        Text = device.FriendlyName;

        // add viewer to form
        Controls.Add(viewer);

        // create video preview
        _cameraPreview = new VideoPreview(viewer, device);
    }


    protected override void OnShown(System.EventArgs e)
    {
        base.OnShown(e);

        // start image capturing
        _cameraPreview.Start();
    }

    protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
        // stop image capturing
        _cameraPreview.Stop();

        base.OnClosing(e);        
    }
}

/// <summary>
/// Test for previewing video from all available cameras.
/// </summary>
public class VideoPreviewTest
{
    public static void ShowVideoFromAllCameras()
    {
        // get available capture devices
        System.Collections.ObjectModel.ReadOnlyCollection<Vintasoft.Imaging.Media.ImageCaptureDevice> availableDevices =
            Vintasoft.Imaging.Media.ImageCaptureDeviceConfiguration.GetCaptureDevices();
        if (availableDevices.Count == 0)
            throw new System.InvalidOperationException("No connected devices.");

        // set device desired formats
        foreach (Vintasoft.Imaging.Media.ImageCaptureDevice device in availableDevices)
            device.DesiredFormat = device.SupportedFormats[0];

        // preview video from all available cameras
        foreach (Vintasoft.Imaging.Media.ImageCaptureDevice device in availableDevices)
        {
            // preview video from camera in the first form
            VideocamForm myForm = new VideocamForm(device);
            myForm.Show();

            // preview video from camera in the second form
            VideocamForm myForm2 = new VideocamForm(device);
            myForm2.Width = myForm2.Width / 2;
            myForm2.Height = myForm2.Height / 2;
            myForm2.Show();
        }

        // if is console application
        //Application.Run();
    }

}

Inheritance Hierarchy

System.Object
   Vintasoft.Imaging.Media.ImageCaptureSource

Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also