Vous êtes sur la page 1sur 3

Cours GTK 2 http://gtk.developpez.com/cours/gtk2/?

page=page_11

Forums Tutoriels Magazine FAQs Blogs Chat Newsletter tudes Emploi Club
Contacts
p
u

Vos recrutements informatiques b


l
i
c
700 000 dveloppeurs, chefs de projets, ingnieurs, informaticiens... i
t
Contactez notre quipe spcialiste en recrutement

Accueil ALM Java .NET Dv. Web EDI Programmation SGBD Office Solutions d'entreprise Applications Mobiles Systmes

Accueil C Forums C FAQ C Tutoriels C Livres C Compilateurs et outils C Sources C Bibliothques C GTK+

ACCUEIL GTK+ FORUM GTK+ FAQ GTK+ TUTORIELS GTK+ SOURCES GTK+ BIBLIOTHEQUES LIVRES GTK+ OUTILS GTK+

Cours GTK 2

Table des matires

XI. Les images


XI-A. Utilisation du widget
GtkImage
XI-A-1. Cration
XI-A-2. Modification de
l'image
XI-A-3. Exemple
XI-A-4. Programme
exemple
XI-B. En savoir plus
XI-B-1. Fonction non
documentes.

XI. Les images


Nous allons cette fois, essayer de rendre nos fentres un peu moins austres. Pour
cela, nous allons utiliser des images grce au widget GtkImage. Nous allons voir
comment afficher une image partir d'un fichier ou d'un GtkStockItem.

XI-A. Utilisation du widget GtkImage

XI-A-1. Cration

Pour ce widget, il y a toute une panoplie de fonction de cration. Nous n'allons en


tudier que quelques-unes, car certaines font appel des notions par encore vues.
Voici donc les fonctions tudies :

Slectionnez
GtkWidget* gtk_image_new (void);
GtkWidget* gtk_image_new_from_file(const gchar *filename);
GtkWidget* gtk_image_new_from_stock(const gchar *stock_id, GtkIconSize size);

La premire cre une image mais compltement vide.

La deuxime cre l'image partir du fichier filename. Gtk+ est capable d'utiliser les
images qui sont au format PNG, JPEG, TIFF. Le chemin du fichier filename peut tre
relatif ou absolu. Si le chemin spcifi est incorrect ou que le format de l'image est
invalide, l'image de retour sera celle-ci :

La troisime fonction, rcupre l'image qui est associe un objet GtkStockItem afin
de l'afficher. Le paramtre size peut prendre sept valeurs diffrentes pour dfinir la
taille de l'image afficher :

Valeur Aperu
Ne peut tre pass en
GTK_ICON_SIZE_INVALID paramtre. Ceci est uniquement
une valeur de retour.
GTK_ICON_SIZE_MENU

GTK_ICON_SIZE_SMALL_TOOLBAR

GTK_ICON_SIZE_LARGE_TOOLBAR

GTK_ICON_SIZE_BUTTON

1 sur 3 05/08/2015 05:26


Cours GTK 2 http://gtk.developpez.com/cours/gtk2/?page=page_11

GTK_ICON_SIZE_DND

GTK_ICON_SIZE_DIALOG

XI-A-2. Modification de l'image

Cette tape intervient lorsque vous avez cr une image vide ou lorsque vous voulez
changer d'image. Les deux fonctions tudies ici sont :

Slectionnez
void gtk_image_set_from_file(GtkImage *image, const gchar *filename);
void gtk_image_set_from_stock(GtkImage *image, const gchar *stock_id, GtkIconSize size);

Les paramtres sont les mmes que lors de la cration d'un widget GtkImage, sauf
qu'il faut prciser quel widget il faut appliquer l'image.

XI-A-3. Exemple

Notre exemple comprendra deux composants. Tout d'abord une zone ou est affiche
l'image, puis un bouton contenant l'image du GtkStockItem GTK_STOCK_QUIT, pour
quitter l'application.

XI-A-4. Programme exemple

Slectionnez
#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)


{
GtkWidget *pWindow;
GtkWidget *pVBox;
GtkWidget *pImage;
GtkWidget *pQuitImage;
GtkWidget *pQuitBtn;

gtk_init(&argc, &argv);

pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
gtk_window_set_title(GTK_WINDOW(pWindow), "GtkImage");
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);

pVBox = gtk_vbox_new(FALSE, 0);


gtk_container_add(GTK_CONTAINER(pWindow), pVBox);

/* Chargement d'une image a partir d'un fichier */


pImage = gtk_image_new_from_file("./gtk.png");
gtk_box_pack_start(GTK_BOX(pVBox), pImage, FALSE, FALSE, 5);

pQuitBtn = gtk_button_new();
gtk_box_pack_start(GTK_BOX(pVBox), pQuitBtn, TRUE, FALSE, 5);
g_signal_connect(G_OBJECT(pQuitBtn), "clicked", G_CALLBACK(gtk_main_quit), NULL);

/* Chargement d'une image a partir d'un GtkStockItem */


pQuitImage = gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_container_add(GTK_CONTAINER(pQuitBtn), pQuitImage);

gtk_widget_show_all(pWindow);

gtk_main();

return EXIT_SUCCESS;
}

Rsultat :

XI-B. En savoir plus

XI-B-1. Fonction non documentes.

2 sur 3 05/08/2015 05:26


Cours GTK 2 http://gtk.developpez.com/cours/gtk2/?page=page_11

Slectionnez
void gtk_image_get_icon_set(GtkImage *image, GtkIconSet **icon_set, GtkIconSize *size);
void gtk_image_get_image(GtkImage *image, GdkImage **gdk_image, GdkBitmap **mask);
GdkPixbuf* gtk_image_get_pixbuf(GtkImage *image);
void gtk_image_get_pixmap(GtkImage *image, GdkPixmap **pixmap, GdkBitmap **mask);
void gtk_image_get_stock(GtkImage *image, gchar **stock_id, GtkIconSize *size);
GdkPixbufAnimation* gtk_image_get_animation(GtkImage *image);
GtkImageType gtk_image_get_storage_type(GtkImage *image);
GtkWidget* gtk_image_new_from_icon_set(GtkIconSet *icon_set, GtkIconSize size);
GtkWidget* gtk_image_new_from_image(GdkImage *image, GdkBitmap *mask);
GtkWidget* gtk_image_new_from_pixbuf(GdkPixbuf *pixbuf);
GtkWidget* gtk_image_new_from_pixmap(GdkPixmap *pixmap, GdkBitmap *mask);
GtkWidget* gtk_image_new_from_animation(GdkPixbufAnimation *animation);
void gtk_image_set_from_icon_set(GtkImage *image, GtkIconSet *icon_set, GtkIconSize size);
void gtk_image_set_from_image(GtkImage *image, GdkImage *gdk_image, GdkBitmap *mask);
void gtk_image_set_from_pixbuf(GtkImage *image, GdkPixbuf *pixbuf);
void gtk_image_set_from_pixmap(GtkImage *image, GdkPixmap *pixmap, GdkBitmap *mask);
void gtk_image_set_from_animation(GtkImage *image, GdkPixbufAnimation *animation);
void gtk_image_set(GtkImage *image, GdkImage *val, GdkBitmap *mask);
void gtk_image_get(GtkImage *image, GdkImage **val, GdkBitmap **mask);

Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre
convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge
par les droits d'auteur. Copyright 2013 developpez. Aucune reproduction, mme partielle,
ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images,
etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans
de prison et jusqu' 300 000 de dommages et intrts.

Responsable bnvole de la rubrique GTK+ : Francis Walter - Contacter par email

Nous contacter Participez Hbergement Informations lgales Partenaire : Hbergement Web


Copyright 2000-2015 - www.developpez.com

3 sur 3 05/08/2015 05:26