visualizzare un'immagine in gtk - è un'area di disegno gtk richiesta?
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?
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; -)