Ottenere un'immagine del Form
Per ottenere un'immagine del Form, comprensivo di ogni Oggetto grafico figlio in esso contenuto, è possibile adottare almeno due modalità.
Uso del Metodo .Screeshot( ) della Classe Desktop
La prima modalità prevede l'uso del Metodo .Screeshot( ) della Classe Desktop. Pertanto è necessario attivare anche i Componenti "gb.desktop" e "gb.desktop.x11" di Gambas.
Con il Metodo .Screeshot( ) si otterrà una Picture dell'Oggetto (il Form in tal caso) posto a una distanza x, y del medesimo dall'angolo alto sinistro dello schermo.
Nell'esempio pratico che segue, porremo sul Form un TextBox, una PictureBox, per far mostrare un qualsiasi file immagine, e un Button. Si provvederà a effettuare la schermata del Form, pochissimo tempo dopo che questo si sarà attivato.
Public Sub Form_Open()
TextBox1.Text = "Gambas"
PictureBox1.Picture = Picture.Load("' /percorso/del/file/immagine.png")
Button1.Foreground = Color.Red
Button1.Text = "Gambas"
End
Public Sub Form_Activate()
Dim pc As Picture
' Resta in attesa un po' per consentire che il Form si apra completamente mostrando anche gli Oggetti "figli" da esso contenuti:
Sleep 0.5
' Effettua la schermata del Form, generando un Oggetto di tipo "Picture":
pc = Desktop.Screenshot(Me.ScreenX, Me.ScreenY, Me.W, Me.H)
' Salva la schermata in un file immagine di tipo "png":
pc.Save("/tmp/test.png", 100)
End
Uso del Metodo .GetScreeshot( ) della Classe DesktopWindow
La seconda malità prevede l'uso del Metodo .GetScreeshot( ) della Classe DesktopWindow. Pertanto è necessario attivare anche i Componenti "gb.desktop" e "gb.desktop.x11" di Gambas.
Con il Metodo .GetScreeshot( ) si otterrà una Picture dell'Oggetto (il Form in tal caso) posto a una distanza x, y del medesimo dall'angolo alto sinistro dello schermo.
Nell'esempio pratico che segue, porremo sul Form un TextBox, una PictureBox, per far mostrare un qualsiasi file immagine, e un Button. Anche in questo caso si provvederà a effettuare la schermata del Form, pochissimo tempo dopo che questo si sarà attivato.
Public Sub Form_Open()
TextBox1.Text = "Gambas"
PictureBox1.Picture = Picture.Load("' /percorso/del/file/immagine.png")
Button1.Foreground = Color.Red
Button1.Text = "Gambas"
End
Public Sub Form_Activate()
Dim dw As DesktopWindow
Dim pc As Picture
' Resta in attesa un po' per consentire che il Form si apra completamente mostrando anche gli Oggetti "figli" da esso contenuti:
Sleep 0.5
' Genera una variabile di tipo "DesktopWindow" che punta al Form, avendo individuato il numero identificativo della finestra del Form medesimo:
With dw = New DesktopWindow(Me.Id)
' Effettua la schermata del Form, generando un Oggetto di tipo "Picture":
pc = .GetScreenshot(True)
End With
' Salva la schermata in un file immagine di tipo "png":
pc.Save("/tmp/test.png", 100)
End