Autore Topic: [DOMANDINA] Immagine del form o di un controllo  (Letto 1242 volte)

Offline Th3Sun

  • Gamberetto
  • *
  • Post: 1
    • Mostra profilo
    • http://www.google.it
[DOMANDINA] Immagine del form o di un controllo
« il: 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!!!  ;-)

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #1 il: 10 Ottobre 2009, 17:32:23 »
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

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #2 il: 10 Ottobre 2009, 17:43:08 »
@ Giulio

L'esempio si blocca con l'errore #11

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #3 il: 10 Ottobre 2009, 17:48:22 »
Risolto...

necessita per forza delle qt

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #4 il: 10 Ottobre 2009, 17:48:54 »
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...

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #5 il: 10 Ottobre 2009, 17:56:11 »
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...;-)

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #6 il: 11 Ottobre 2009, 17:20:49 »
Ho segnalato il bug a Benoit e lo ha 'fixato'.

Citazione

> 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

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #7 il: 11 Ottobre 2009, 18:47:06 »
Perfetto! Non possiamo che ringraziarti tutti!

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: [DOMANDINA] Immagine del form o di un controllo
« Risposta #8 il: 12 Ottobre 2009, 12:43:53 »
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.