Les images
Nous allons cette fois, essayer de rendre nos fenêtres un peu moins austères.
Pour cela, nous allons utiliser des images grâce au widget GtkImage. Nous
allons voir comment afficher une image à partir d'un fichier ou d'un
GtkStockItem.
1. Utilisation du widget GtkImage.
1.1 Création.
Pour ce widget, il y a toute une panoplie de fonction de création. Nous
n'allons en étudier que quelques-unes, car certaines font appel à
des notions par encore vues. Voici donc les fonctions étudiées
:
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 première crée une image mais complètement vide.
La deuxième crée 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
spécifié est incorrect ou que le format de l'image est invalide,
l'image de retour sera celle-ci : 
La troisième fonction, récupère l'image qui est associée
à un objet GtkStockItem afin de l'afficher. Le paramètre size
peut prendre sept valeurs différentes pour définir la taille de
l'image à afficher :
| Valeur |
Aperçu |
| GTK_ICON_SIZE_INVALID |
Ne peut être passé en paramètre. 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 |
 |
| GTK_ICON_SIZE_DND |
 |
| GTK_ICON_SIZE_DIALOG |
 |
1.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 étudiées
ici sont :
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 paramètres sont les même que lors de la création d'un
widget GtkImage, sauf qu'il faut préciser à quelle widget il faut
appliquer l'image.
1.3 Exemple.
Notre exemple comprendra deux composant. Tout d'abord une zone ou est affichée
l'image, puis un bouton contenant l'image du GtkStockItem GTK_STOCK_QUIT, pour
quitter l'application.
1.4 Programme exemple.
#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;
} |
Résultat :
|
2. En savoir plus.
2.1 Fonction non documentées.
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);
Date de mise à jour : 17 mai 2003