Leadtools.MediaFoundation Namespace > CaptureCtrl Class : CaptureFrame Method |
'Declaration Public Overridable Sub CaptureFrame()
'Usage Dim instance As CaptureCtrl instance.CaptureFrame()
public virtual void CaptureFrame()
public: virtual void CaptureFrame();
If the method fails, an error will be raised. For more information, refer to the Error Codes.
Imports Leadtools Imports Leadtools.MediaFoundation Imports LeadtoolsMediaFoundationExamples.Fixtures Public _result As Boolean = False Public _form As New CaptureCtrlForm() Public Sub CaptureFrameExample() ' reference the capture control Dim capturectrl As CaptureCtrl = _form.CaptureCtrl ' output file Dim outFile As String = Path.Combine(LEAD_VARS.MediaDir, "CaptureCtrl_CaptureFrameExample.bmp") Try ' set the video capture device, use your capture device name here If capturectrl.VideoDevices("Logitech") Is Nothing Then Throw New Exception("No Logitech video device available") End If capturectrl.VideoDevices("Logitech").Selected = True capturectrl.TargetFormat = TargetFormatType.MP4 ' prepare the manual frames capture capturectrl.ReadyCapture(CaptureMode.ManualFrames) ' do something before the capture starts If capturectrl.IsModeAvailable(CaptureMode.ManualFrames) Then End If ' set the capture mode to manual frames capturectrl.StartCapture(CaptureMode.ManualFrames) ' capture a frame capturectrl.CaptureFrame() ' stop the capture capturectrl.StopCapture() ' check for the capture file and set the result If File.Exists(outFile) Then Dim test As Image = Bitmap.FromFile(outFile) _result = True End If Catch generatedExceptionName As COMException _result = False Catch generatedExceptionName As Exception _result = False End Try ' we'll loop on the state and pump messages for this example. ' but you should not need to if running from a Windows Forms application. While capturectrl.State = CaptureState.Running Application.DoEvents() End While End Sub Private Function FormatFromBitCount(ByVal bitCount As Integer) As PixelFormat Select Case bitCount Case 8 Return PixelFormat.Format8bppIndexed Case 16 Return PixelFormat.Format16bppRgb555 Case 32 Return PixelFormat.Format32bppRgb Case 48 Return PixelFormat.Format48bppRgb Case 24 Return PixelFormat.Format24bppRgb End Select Throw New Exception("Unrecognized bit count") End Function Private Function GetBitmapSize(ByVal bmp As Bitmap, ByVal bitCount As Integer) As Integer Dim pixelSize As Integer = CInt(Math.Log(CDbl(bitCount))) Return (bmp.Width * pixelSize + pixelSize And Not 3) * bmp.Height End Function Private Function GetBitmapScanRowSize(ByVal bmpSize As Integer, ByVal stride As Integer, ByVal width As Integer) As Integer Return bmpSize / (stride / width) End Function Public Sub CaptureFrame_Helper(ByVal sender As Object, ByVal e As EventArgs) ' set result _result = True End Sub Public NotInheritable Class LEAD_VARS Public Const MediaDir As String = "C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media" End Class
using Leadtools; using Leadtools.MediaFoundation; using LeadtoolsMediaFoundationExamples.Fixtures; public bool _result = false; public CaptureCtrlForm _form = new CaptureCtrlForm(); public void CaptureFrameExample() { // reference the capture control CaptureCtrl capturectrl = _form.CaptureCtrl; // output file string outFile = Path.Combine(LEAD_VARS.MediaDir,"CaptureCtrl_CaptureFrameExample.bmp"); try { // set the video capture device, use your capture device name here if (capturectrl.VideoDevices["Logitech"] == null) throw new Exception("No Logitech video device available"); capturectrl.VideoDevices["Logitech"].Selected = true; capturectrl.TargetFormat = TargetFormatType.MP4; // prepare the manual frames capture capturectrl.ReadyCapture(CaptureMode.ManualFrames); // do something before the capture starts if (capturectrl.IsModeAvailable(CaptureMode.ManualFrames)) { } // set the capture mode to manual frames capturectrl.StartCapture(CaptureMode.ManualFrames); // capture a frame capturectrl.CaptureFrame(); // stop the capture capturectrl.StopCapture(); // check for the capture file and set the result if (File.Exists(outFile)) { Image test = Bitmap.FromFile(outFile); _result = true; } } catch (COMException) { _result = false; } catch (Exception) { _result = false; } // we'll loop on the state and pump messages for this example. // but you should not need to if running from a Windows Forms application. while (capturectrl.State == CaptureState.Running) Application.DoEvents(); } private PixelFormat FormatFromBitCount(int bitCount) { switch (bitCount) { case 8: return PixelFormat.Format8bppIndexed; case 16: return PixelFormat.Format16bppRgb555; case 32: return PixelFormat.Format32bppRgb; case 48: return PixelFormat.Format48bppRgb; case 24: return PixelFormat.Format24bppRgb; } throw new Exception("Unrecognized bit count"); } private int GetBitmapSize(Bitmap bmp, int bitCount) { int pixelSize = (int)Math.Log((double)bitCount); return (bmp.Width * pixelSize + pixelSize & ~3) * bmp.Height; } private int GetBitmapScanRowSize(int bmpSize, int stride, int width) { return bmpSize / (stride / width); } public void CaptureFrame_Helper(object sender, EventArgs e) { // set result _result = true; } static class LEAD_VARS { public const string MediaDir = @"C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media"; }