Domanda

Sto cercando di visualizzare un'immagine che si carica da un pixbuf (dai dati in memoria) e l'immagine viene aggiornata ogni volta (come il pixbuf sta cambiando con il tempo). La mia domanda è che, poiché la finestra conterrà solo l'immagine (che viene aggiornato periodicamente), ho bisogno di un drawable gtk o di un'area di disegno per questo? o posso semplicemente visualizzare l'immagine nella finestra? Un'altra opzione sarebbe quella di utilizzare cairo. Qualcuno può suggerire un buon modo per farlo?

È stato utile?

Soluzione

Caricare il file in un pixbuf, v'è un costruttore new_from_file o qualcosa per questo.

Sì, crea una DrawingArea e incollarla in una scatola o qualcosa da qualche parte.

Avanti, ottenere la finestra DrawingArea genitore (ci sarà un metodo come get_window o qualcosa per questo). Questo sarà il tuo Drawable.

Crea una (contesto grafico) GC -. Non avete bisogno di impostare i valori speciali in esso

Collegare il DrawingArea ad un evento esporre. Nel caso in cui esporre, ce l'ha chiamare il metodo draw_pixbuf sul Drawable con il pixbuf con il GC si è creato.

Chiamare questo stesso metodo draw_pixbuf ogni volta che si aggiorna il pixbuf in qualche modo.

Si può anche voler considerare l'utilizzo di una pixmap, invece, se non si sta caricando da un file e l'intenzione di disegnare su di esso. Una pixmap sé è un Drawable, in modo da poter disegnare direttamente rettangoli e le cose su di esso. L'unica vera differenza nella visualizzazione sul vostro DrawingArea è che è necessario chiamare il metodo draw_drawable anziché draw_pixbuf sul Drawable.

Si noti che sto scrivendo questo a memoria di utilizzare Perl / Gtk2, e non può mappare in modo pulito in qualsiasi linguaggio che si sta utilizzando.

Altri suggerimenti

Un GtkImage funzionano bene, ed essere più semplice di tutte le cose che hai elencato; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top