Programmation GTK2 en Pascal/GtkImage
Programmation GTK2 en Pascal |
|
Présentation
modifierLe contrôle GtkImage va nous permettre d'afficher des images à l'intérieur de nos fenêtres.
Hiérarchie
modifierHiérarchie |
GObject └─GtkObject └─GtkWidget └─GtkMisc └─GtkImage |
Utilisation de base
modifierCréation
modifierPour ce contrôle, 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 plus complexes. Voici donc les fonctions étudiées :
function gtk_image_new : PGtkWidget; function gtk_image_new_from_file(filename : Pgchar) : PGtkWidget; function gtk_image_new_from_stock(stock_id : Pgchar; size : TGtkIconSize) : PGtkWidget;
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 présentera une croix rouge sur fond blanc.
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 :
- GTK_ICON_SIZE_INVALID
- 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
Modification de l'image.
modifierCette étape intervient lorsque vous avez créé une image vide ou lorsque vous voulez changer d'image. Les deux fonctions étudiées ici sont :
procedure gtk_image_set_from_file(image : PGtkImage; filename : Pgchar); procedure gtk_image_set_from_stock(image : PGtkImage; stock_id : Pgchar; size : TGtkIconSize);
Les paramètres sont les mêmes que lors de la création d'un contrôle GtkImage, sauf qu'il faut préciser à quel contrôle il faut appliquer l'image.
Programme exemple
modifierVoilà le fichier gtk015.pas
:
program gtk015; uses glib2, gtk2; var pFenetre : PGtkWidget; pVBox : PGtkWidget; pImage : PGtkWidget; pImageQuitter : PGtkWidget; pBtnQuitter : PGtkWidget; begin gtk_init(@argc, @argv); pFenetre := gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(pFenetre), 320, 200); gtk_window_set_title(GTK_WINDOW(pFenetre), 'Gtk015 : Images'); gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL); pVBox := gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(pFenetre), 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); pBtnQuitter := gtk_button_new; gtk_box_pack_start(GTK_BOX(pVBox), pBtnQuitter, TRUE, FALSE, 5); g_signal_connect(pGTKOBJECT(pBtnQuitter), 'clicked', GTK_SIGNAL_FUNC(@gtk_main_quit), NULL); // Chargement d'une image a partir d'un GtkStockItem pImageQuitter := gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_container_add(GTK_CONTAINER(pBtnQuitter), pImageQuitter); gtk_widget_show_all(pFenetre); gtk_main; end.
Voilà ce que donne l'exécution du programme gtk015
:
Visuels : GtkLabel ~ GtkImage ~ GtkStatusBar ~ GtkProgressBar ~ GtkDrawingArea |