Gambas-it
Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Th3Sun - 10 Ottobre 2009, 16:39:51
-
Ciao a tutti!
Volevo farvi alcune semplici domande per continuare lo sviluppo del mio semplice programma di grafica.
1) Come faccio ad ottenere l'immagine (screen) dello schermo?
2) Come faccio ad ottenere l'immagine del form?
3) Come faccio ad ottenere l'immagine di un controllo? (nello specifico un DrawingArea)
4) Come posso ottenere il contenuto della cache del controllo DrawingArea?
Gradirei una vostra risposta, magari con esempi.
Grazie!!! ;-)
-
Allego esempio, per i primi tre quesiti. Il quarto non l'ho capito.
Premi il Button1 e nella tua home directory, troverai:
immagine-desktop.jpg
immagine-form.jpg
immagine-drawingarea.jpg
-
@ Giulio
L'esempio si blocca con l'errore #11
-
Risolto...
necessita per forza delle qt
-
Verificato. Solito problema con la gb.gtk. Io sono sotto KDE e l'esempio usa gb.qt, per cui non ho errori. Così Gambas non decollerà mai...
-
Infatti...ormai i problemi sono quasi sempre dovuti a quello...chi sviluppa sotto qt non si rende conto degli errori che invece notiamo noi sotto gtk...
Vabbè comunque ti ringrazio perchè mediante questo esempio posso migliorare un mio programma pure io...;-)
-
Ho segnalato il bug a Benoit e lo ha 'fixato'.
> I've attached a little example.
> When you press Button1 it saves 3 pictures
> in your home directory:
> immagine-desktop.jpg
> immagine-form.jpg
> immagine-drawingarea.jpg
> With gb.qt everything works fine. With
> gb.gtk the program stops by raising
> signal #11.
Fixed in revision #2389.
Regards,
-- Benoît Minisini
-
Perfetto! Non possiamo che ringraziarti tutti!
-
Riguardo alla DrawingArea devo fare un appunto:
il metodo Grag(), secondo me, funziona in malo modo, ovvero non ritorna l'immagine della DrawingArea, bensì tutto quello che è presente nella stessa ma anche sopra ad essa.
Questo l'ho sperimentato in pgDesigner, dove la DrawingArea è di dimensioni enormi, ed è contenuta in una ScrollArea. Con Grab(), l'immagine risultante contiene anche la ScrollBar e pure tutto quello che è sopra la drwaing, ovvero menu, form, ecc.
Questo mi ha costretto a creare un logica double-buffering, ovvero la gestione in memoria dell'immagine originale, che poi viene spalmata sulla DrawingArea. Ovviamente questo limita la velocità e incrementa l'uso esagerato dello spazio di memoria.
Questo stesso comportamento si ha con tutti gli oggetti, che hanno un metodo Grab(). Io penso che sia da correggere, perchè a questo punto sarebbe solo un Print Screen classico.
Il discorso è legato alle qt, dato che pgDesigner utilizza quelle librerie, quindi non sò se la stessa cosa accade con le gtk.