Ottenere una schermata ("screenshot") con Gambas

Da Gambas-it.org - Wikipedia.

Per effettuare una schermata, ossia uno screenshot, di un'area mediante il solo codice Gambas, si dovrà utilizzare l'omonimo metodo .Screenshot della classe Desktop.

Si dovrà impostare nel progetto anche il componente gb.desktop.

Public Sub Button1_Click()

 Dim pc As Picture

' Individuiamo il riquadro interessato dallo screenshot secondo i soliti parametri: X, Y, Width, Height.
' Assegnamo, quindi, la schermata in una variabile di tipo "Picture"...:
   pc = Desktop.Screenshot(100, 100, 100, 100)
  
' ...che caricheremo in una "PictureBox" per mostrarla:
   PictureBox1.Picture = pc

End


Mostriamo ora un esempio più complesso: determineremo con lo spostamento del mouse l'area della schermata da mostrare nella PictureBox.

Private pn As Panel
Private xIniz As Integer
Private yIniz As Integer
Private pc As Picture


Public Sub Form_MouseDown()

' Se non c'è una schermata nella "PictureBox", viene distrutta:
 If Not IsNull(pc) Then
   PictureBox1.Picture.Clear
 Endif
 
' Per definire, anche visivamente, l'area utilizzeremo un "Panel":
  pn = New Panel(Me)
  
' Raccogliamo le coordinate iniziali del mouse nel momento del clic:
  xIniz = Mouse.X
  yIniz = Mouse.Y

End


Public Sub Form_MouseMove()

  With pn
   .Border = Border.Plain
   .Width = Mouse.X - xIniz
   .Height = Mouse.Y - yIniz
   .X = xIniz  ' le coordinate di partenza sono quelle impostate...
   .Y = yIniz  ' ...con il MouseDown.
  End With

End


Public Sub Form_MouseUp()
 
' Effettuiamo la schermata (ossia lo "screenshot") dell'area individuata dal "Panel" dimensionato con lo spostamento del mouse.
' L'area interessata, dunque, avrà le medesime coordinate e dimensioni di quel "Panel":
 With pn
   pc = Desktop.Screenshot(.X, .Y, .W, .H)
 End With

' Mostriamo la picture della schermata nella "PictureBox" posta sul form:
 PictureBox1.Picture = pc

' Quindi salviamo da qualche parte la schermata:
  pc.Save("/tmp/schermata.png")
 
 pn.Delete
 
 
End