Per ottenere un'istantanea dell'interno schermo sottoforma di oggetto Bitmap, in VB.Net è abbastanza semplice, basta appoggiarsi alle classi Bitmap e Graphics dello Spazio dei nomi System.Drawing.
La funzione qui riportata crea una nuova immagine di dimensioni uguali alla superficie dello schermo in uso.
Private Function CaptureScreen() As System.Drawing.Bitmap
' Creo un oggetto bitmap di dimensioni uguali allo schermo
Dim b As Bitmap = New Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)
' Creo l'oggetto graphics
Dim g As Graphics = Graphics.FromImage(b)
' Definisco un oggetto Size con le dimensioni dello schermo
Dim sz As Size = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)
' Catturo l'intera area dello schermo
g.CopyFromScreen(0, 0, 0, 0, sz, CopyPixelOperation.SourceCopy)
' Restituisco l'oggetto bitmap
Return b
End Function
Ecco un esempio concreto di come applicare la funzione:
- Creare un nuovo progetto Vb.Net
- Creare un form
- Inserire un pulsante chiamato btnCattura ed una PictureBox chiamata myPictureBox
- Assegnare all'evento btnCattura l'istruzione myPictureBox.Image = CaptureScreen (come riportato in seguito)
- Copiare la funzione CaptureScreen
- Eseguire il progetto
Private Sub btnCattura(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCattura.Click
' Catturo lo schermo e lo visualizzo nella PictureBox
myPictureBox.Image = CaptureScreen
End Sub
Una volta ottenuta l'immagine sarà anche possibile salvarla su disco in vari formati come riportato in questo post.