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