Con il seguente codice è possibile copiare una qualunque zona dello schermo e memorizzarla in un'immagine:
Class Form1 Private Function CopiaAreaSchermo() As System.Drawing.Bitmap 'definizione dell'area dello schermo da copiare: in questo caso è una porzione rettangolare di 150x200 pixel e il suo 'angolo superiore SX è situato nel punto (500,296) dello schermo Dim areaDaCopiare As Rectangle = New Rectangle(500, 296, 150, 200) 'definizione del punto in cui vogliamo che l'immagine copiata venga rappresentata nella nostra Form Dim posizione As Point = New Point(20, 30) 'impostazione della bitmap che memorizzerà l'immagine da copiare Dim immagineCopiata As Bitmap = New Bitmap(150, 200) 'creazione di un'istanza dell'oggetto Graphics Dim g As Graphics = Graphics.FromImage(immagineCopiata) 'si copia l'area scelta g.CopyFromScreen(areaDaCopiare.X, areaDaCopiare.Y, posizione.X, posizione.Y, New Size(150, 200), _ CopyPixelOperation.SourceCopy) Return immagineCopiata End Function Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.BackgroundImageLayout = ImageLayout.None 'si carica l'immagine copiata nello sfondo della Form Me.BackgroundImage = CopiaAreaSchermo() End Sub End Class
Come copiare tutto lo schermo
Se vogliamo effettuare lo screenshot di tutto lo schermo, è sufficiente cambiare le dimensioni dell'area da catturare e i punti in cui iniziare a copiare e dove inserire l'immagine.
Class Form1 Private Function CopiaAreaSchermo() As System.Drawing.Bitmap 'definizione dell'area dello schermo da copiare: Dim areaDaCopiare As Rectangle = New Rectangle(0, 0, My.Computer.Screen.WorkingArea.Width, _ My.Computer.Screen.WorkingArea.Height) 'impostazione della bitmap che memorizzerà l'immagine da copiare Dim immagineCopiata As Bitmap = New Bitmap(areaDaCopiare.Width, areaDaCopiare.Height) 'creazione di un'istanza dell'oggetto Graphics Dim g As Graphics = Graphics.FromImage(immagineCopiata) 'si copia l'area scelta g.CopyFromScreen(0, 0, 0, 0, New Size(areaDaCopiare.Width, areaDaCopiare.Height), _ CopyPixelOperation.SourceCopy) Return immagineCopiata End Function Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.BackgroundImageLayout = ImageLayout.None 'si carica l'immagine copiata nello sfondo della Form Me.BackgroundImage = CopiaAreaSchermo() End Sub End Class