Le code ci-dessus est nécessaire pour activer la caméra.
sous Public Class frmWebCam, collez le code suivant :
Dim camera As VideoCaptureDevice
Dim bmp As Bitmap
Dim cap As String = "Capture"
Le code déclarera les variables utilisées dans notre programme.
Dans le gestionnaire d'événements frmWebCam_FormClosing, collez le code suivant
Private Sub frmWebCam_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Try
camera.Stop()
Catch ex As Exception
Me.Dispose()
End Try
End Sub
Le code mettra fin à la caméra et ramènera tout à l'état initial, puis fermera le programme.
Dans le gestionnaire d'événements frmWebCam_Load, collez le code suivant
Private Sub frmWebCam_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cmdno.Visible = False
cmdok.Visible = False
Dim videoCapDevFrm As VideoCaptureDeviceForm = New VideoCaptureDeviceForm()
If videoCapDevFrm.ShowDialog() = DialogResult.OK Then
camera = videoCapDevFrm.VideoDevice
AddHandler camera.NewFrame, New NewFrameEventHandler(AddressOf dzoCapture)
camera.Start()
Else
Me.Close()
End If
End Sub
Le code affichera une boîte de dialogue sous forme de périphérique de capture vidéo, puis une fois que l'utilisateur aura choisi une résolution vidéo, un périphérique vidéo et
entrée vidéo et clique sur « OK », puis il passera au formulaire principal, sinon le formulaire/programme se ferme.
Déclarez un Sub Privé en le nommant « dzoCapture » puis/ou collez les codes suivants (il devrait ressembler à ci-dessous).
Private Sub dzoCapture(sender As Object, eventArgs As NewFrameEventArgs)
bmp = DirectCast(eventArgs.Frame.Clone(), Bitmap)
pbcaptureimage.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
End Sub
Il s'agit du code du bouton de capture et le code capturera également une image du périphérique vidéo sous forme de bitmap.
Double-cliquez sur le bouton btnCapture puis collez ce qui suit.
Private Sub btnCapture_Click(sender As Object, e As EventArgs) Handles btnCapture.Click
If cap = "Capture" Then
cmdno.Visible = True
cmdok.Visible = True
btnCapture.Visible = False
camera.Stop()
cap = "Start"
ElseIf cap = "Start" Then
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
cap = "Capture"
End If
End Sub
Le code affichera la photo capturée dans la zone Image, puis masquera le bouton de capture et
affiche le bouton de confirmation et d'annulation.
Double-cliquez sur le bouton cmdok puis collez ce qui suit.
Private Sub cmdno_Click(sender As Object, e As EventArgs) Handles cmdno.Click
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
btnCapture.Visible = True
cap = "Capture"
End Sub
Le code rejettera l'image capturée et redémarrera la caméra. Cela masquera également le
confirmer/oui ou annuler/non et affiche le bouton de capture.
Double-cliquez sur le bouton cmdok puis collez ce qui suit.
Private Sub cmdok_Click(sender As Object, e As EventArgs) Handles cmdok.Click
Dim saveDlg As New SaveFileDialog
saveDlg.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
saveDlg.FileName = "VBNetCapture_" & Date.Now.ToString("MM/dd/yy")
saveDlg.SupportMultiDottedExtensions = True
saveDlg.AddExtension = True
saveDlg.Filter = "PNG File|*.png"
If saveDlg.ShowDialog() = DialogResult.OK Then
Try
pbcaptureimage.Image.Save(saveDlg.FileName, Imaging.ImageFormat.Png)
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
btnCapture.Visible = True
cap = "Capture"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Else
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
btnCapture.Visible = True
cap = "Capture"
End If
End Sub
Le code enregistrera la photo prise depuis la zone d'image dans un répertoire sélectionné
il redémarre également la caméra.
Code complet
Imports AForge
Imports AForge.Video
Imports AForge.Video.DirectShow
Imports System.IO
Public Class frmWebCam
Dim camera As VideoCaptureDevice
Dim bmp As Bitmap
Dim cap As String = "Capture"
Private Sub frmWebCam_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Try
camera.Stop()
Catch ex As Exception
Me.Dispose()
End Try
End Sub
Private Sub frmWebCam_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cmdno.Visible = False
cmdok.Visible = False
Dim videoCapDevFrm As VideoCaptureDeviceForm = New VideoCaptureDeviceForm()
If videoCapDevFrm.ShowDialog() = DialogResult.OK Then
camera = videoCapDevFrm.VideoDevice
AddHandler camera.NewFrame, New NewFrameEventHandler(AddressOf dzoCapture)
camera.Start()
Else
Me.Close()
End If
End Sub
Private Sub dzoCapture(sender As Object, eventArgs As NewFrameEventArgs)
bmp = DirectCast(eventArgs.Frame.Clone(), Bitmap)
pbcaptureimage.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
End Sub
Private Sub pbcapture_Click(sender As Object, e As EventArgs) Handles pbcapture.Click
If cap = "Capture" Then
cmdno.Visible = True
cmdok.Visible = True
pbcapture.Visible = False
camera.Stop()
cap = "Start"
ElseIf cap = "Start" Then
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
Cap = "Capture"
End If
End Sub
Private Sub cmdno_Click(sender As Object, e As EventArgs) Handles cmdno.Click
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
pbcapture.Visible = True
cap = "Capture"
End Sub
Private Sub cmdok_Click(sender As Object, e As EventArgs) Handles cmdok.Click
Dim saveDlg As New SaveFileDialog
saveDlg.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
saveDlg.FileName = "VBNetCapture_" & Date.Now.ToString("MM/dd/yy")
saveDlg.SupportMultiDottedExtensions = True
saveDlg.AddExtension = True
saveDlg.Filter = "PNG File|*.png"
If saveDlg.ShowDialog() = DialogResult.OK Then
Try
pbcaptureimage.Image.Save(saveDlg.FileName, Imaging.ImageFormat.Png)
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
pbcapture.Visible = True
cap = "Capture"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Else
camera.Start()
cmdno.Visible = False
cmdok.Visible = False
pbcapture.Visible = True
Cap = "Capture"
End If
End Sub
End Class