Skip to main content

Windows Dev Center

LowLagPhotoCapture class

Provides methods for taking a low shutter lag photo.

Syntax


/* For information about creating or accessing this object, see Remarks. */

public sealed class LowLagPhotoCapture

Public NotInheritable Class LowLagPhotoCapture

public ref class LowLagPhotoCapture sealed 

Members

The LowLagPhotoCapture class has these types of members:

Methods

The LowLagPhotoCapture class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.

MethodDescription
CaptureAsync Asynchronously captures a low shutter lag photo.
FinishAsync Asynchronously releases the LowLagPhotoCapture object and resources used by the capture photo operation.

 

Remarks

Use MediaCapture.PrepareLowLagPhotoCaptureAsync to initialize the capture. This is an asynchronous calls which returns a LowLagPhotoCapture object when it is finished. This must be called before CaptureAsync.

FinishAsync stops the photo capture operation and releases the LowLagPhotoCapture object and resources used by the capture photo operation. After starting a low lag photo capture, you must stop the photo capture by calling FinishAsync before your app attempts to record video with the MediaCapture object.

If the media type is changed or an effect is added, you must call MediaCapture.PrepareLowLagPhotoCaptureAsync to create a new LowLagPhotoCapture object.

Examples

Here is some code that shows how to setup and take low lag photos. It displays the captured photo and thumbnail in Image objects. The XAML creates a simple UI with two Image objects and some Button objects to interact with the sample. In code, there is a method to initialize the MediaCapture object, a method to initialize the LowLagPhotoCapture object, a method to take the photo and display it, and a method to shutdown the LowLagPhotoCapture.


<StackPanel Orientation="Horizontal">
    <Image x:Name="imageLowLagPhoto" Stretch="None" 
           Width="320" Height="240" />
    <Image x:Name="imageLowLagThumbnail" Stretch="None" 
           Width="320" Height="240" />
</StackPanel>

<StackPanel Orientation="Horizontal">
    <Button Click="InitMediaCapture_Click" Content="Initialize Camera" />
    <Button Click="InitLowLagPhotoCapture_Click" Content="Initialize Low Lag Photo Capture"/>
    <Button Click="CaptureLagPhotoCapture_Click" Content="Capture Low Lag Photo"/>
    <Button Click="CloseLagPhotoCapture_Click" Content="Finish low Lag Capture"/>
</StackPanel>

LowLagPhotoCapture lowLagCaptureMgr = null;
MediaCapture mediaCaptureManager;

async private void InitMediaCapture_Click(object sender, RoutedEventArgs e)
{
    mediaCaptureManager = new MediaCapture();
    await mediaCaptureManager.InitializeAsync();
}

async private void InitLowLagPhotoCapture_Click(object sender, RoutedEventArgs e)
{
    // Enable thumbnail images
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.ThumbnailEnabled = true;
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.ThumbnailFormat = MediaThumbnailFormat.Bmp;
    mediaCaptureManager.VideoDeviceController.LowLagPhoto.DesiredThumbnailSize = 25;

    // Image properties
    ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

    // Create LowLagPhotoCapture object
    lowLagCaptureMgr = await mediaCaptureManager.PrepareLowLagPhotoCaptureAsync(imgFormat);
}

async private void CaptureLagPhotoCapture_Click(object sender, RoutedEventArgs e)
{
    // Take photo
    CapturedPhoto photo = await lowLagCaptureMgr.CaptureAsync();

    // Get photo as a BitmapImage
    BitmapImage bitmap = new BitmapImage();
    await bitmap.SetSourceAsync(photo.Frame);

    // Get thumbnail as a BitmapImage
    BitmapImage bitmapThumbnail = new BitmapImage();    
    await bitmapThumbnail.SetSourceAsync(photo.Thumbnail);

    // imageLowLagPhoto is a <Image> object defined in XAML
    imageLowLagPhoto.Source = bitmap;

    // imageLowLagThumbnail is a <Image> object defined in XAML
    imageLowLagThumbnail.Source = bitmapThumbnail;
}

async private void CloseLagPhotoCapture_Click(object sender, RoutedEventArgs e)
{
    // Release the LowLagPhotoCapture object and resources
    await lowLagCaptureMgr.FinishAsync();
}

Requirements (Windows 10 device family)

Device family

Universal

API contract

Windows.Foundation.UniversalApiContract, introduced version 1.0

Namespace

Windows.Media.Capture
Windows::Media::Capture [C++]

Metadata

Windows.Foundation.UniversalApiContract.winmd

Requirements (Windows 8.x and Windows Phone 8.x)

Minimum supported client

Windows 8.1 [Windows Store apps, desktop apps]

Minimum supported server

Windows Server 2012 R2 [Windows Store apps, desktop apps]

Minimum supported phone

Windows Phone 8.1 [Windows Phone Silverlight 8.1 and Windows Runtime apps]

Namespace

Windows.Media.Capture
Windows::Media::Capture [C++]

Metadata

Windows.winmd

Attributes

[ DualApiPartition()]
[ MarshalingBehavior(Standard)]
[ Threading(MTA)]
[ Version(0x06030000)]

See also

Object
MediaCapture.PrepareLowLagPhotoCapture
CapturedPhoto
LowLagPhotoControl
MediaControl.VideoDeviceController
LowLagPhotoSequenceCapture