[glade] gtkImage manipulation des images sous glade

gtkImage manipulation des images sous glade [glade] - C - Programmation

Marsh Posté le 11-01-2005 à 22:37:16    

bonjour tout le monde, je suis entrain de concevoir une application graphique sous glade
le probleme : je veux afficher une image jpg
J'ai bien utilisé les widgets fournis avec glade et il me genere ce code la
 

Code :
  1. * create_window1 (void)
  2.     * {
  3.     *   GtkWidget *window1;
  4.     *   GtkWidget *hbox1;
  5.     *   GtkWidget *eventbox1;
  6.     *   GtkWidget *button1;
  7.     *   GtkWidget *eventbox2;
  8.     *   GtkWidget *image1;
  9.     *
  10.     *   window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  11.     *   gtk_window_set_title (GTK_WINDOW (window1), _("window1" ));
  12.     *
  13.     *   hbox1 = gtk_hbox_new (FALSE, 0);
  14.     *   gtk_widget_show (hbox1);
  15.     *   gtk_container_add (GTK_CONTAINER (window1), hbox1);
  16.     *
  17.     *   eventbox1 = gtk_event_box_new ();
  18.     *   gtk_widget_show (eventbox1);
  19.     *   gtk_box_pack_start (GTK_BOX (hbox1), eventbox1, FALSE, FALSE, 0);
  20.     *
  21.     *   button1 = gtk_button_new_with_mnemonic (_("button1" ));
  22.     *   gtk_widget_show (button1);
  23.     *   gtk_container_add (GTK_CONTAINER (eventbox1), button1);
  24.     *
  25.     *   eventbox2 = gtk_event_box_new ();
  26.     *   gtk_widget_show (eventbox2);
  27.     *   gtk_box_pack_start (GTK_BOX (hbox1), eventbox2, TRUE, TRUE, 0);
  28.     *
  29.     *   image1 = create_pixmap (window1, NULL);
  30.     *   gtk_widget_show (image1);
  31.     *   gtk_container_add (GTK_CONTAINER (eventbox2), image1);


 
 
le code a l'aire propre mais il ya seulement le bouton qui est affiché
 
juste une autre question
si le probleme est resolu y a t-il une possibilité de faire quelque chose de animer cad je veux deplacer cette image dans la fenetre
juste une boucle for qui change les coordonnés de l'image et me rafraichie la fenetre
 
merci


Message édité par mehdi_tn le 11-01-2005 à 22:38:13
Reply

Marsh Posté le 11-01-2005 à 22:37:16   

Reply

Marsh Posté le 12-01-2005 à 13:15:48    

Le code est propre : c'est la moindre des choses de la part d'un automate.
Si le code s'arrête à ce qui est publié, il est normal qu'il n'y ait pas d'image car create pixmap cré le pixmap mais il est vide, il faut le remplir ou utiliser un pixbuf qui permet de gérer directement les formats images compressés.
Personnellement, je n'utilise ni glade ni anjuta et fait le tout à l'ancienne. C'est long à coder mais ça marche !
Il existe un site : http://www.gtk-fr.org/wakka.php?wiki=PageAccueil ou il y a un cours de GTK en français.
Bon courage !
 

Reply

Marsh Posté le 12-01-2005 à 23:00:30    

db__ a écrit :

Le code est propre : c'est la moindre des choses de la part d'un automate.
Si le code s'arrête à ce qui est publié, il est normal qu'il n'y ait pas d'image car create pixmap cré le pixmap mais il est vide, il faut le remplir ou utiliser un pixbuf qui permet de gérer directement les formats images compressés.
Personnellement, je n'utilise ni glade ni anjuta et fait le tout à l'ancienne. C'est long à coder mais ça marche !
Il existe un site : http://www.gtk-fr.org/wakka.php?wiki=PageAccueil ou il y a un cours de GTK en français.
Bon courage !


merci db__
g suivi les etapes du lien.
 
la commande pkg-config --modversion gtk+-2.0 me retourne 2.4.0
ensuite j'execute la commande pkg-config --cflags --libs gtk+-2.0 et elle me retourne
[#f0000e]
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
[/#f0000e]
 
 
quand je compile maintenant mon programme avec gcc test.c plein plein plein d'erreurs apparaissent je cite
 
[#f0000e]/usr/include/gtk/gtkitemfactory.h:178: error: erreur de syntaxe before "gpointer"
/usr/include/gtk/gtkitemfactory.h:181: error: erreur de syntaxe before "guint"
/usr/include/gtk/gtkitemfactory.h:185: error: erreur de syntaxe before '*' token
/usr/include/gtk/gtkitemfactory.h:189: error: erreur de syntaxe before "guint"
/usr/include/gtk/gtkitemfactory.h:192: error: erreur de syntaxe before "guint"
/usr/include/gtk/gtkitemfactory.h:197: error: erreur de syntaxe before "gpointer"
/usr/include/gtk/gtkitemfactory.h:203: error: erreur de syntaxe before "gtk_item_factory_popup_data"
/usr/include/gtk/gtkitemfactory.h:204: error: erreur de syntaxe before "gtk_item_factory_popup_data_from_widget"
/usr/include/gtk/gtkitemfactory.h:206: error: erreur de syntaxe before "GtkTranslateFunc"
/usr/include/gtk/gtkitemfactory.h:212: error: erreur de syntaxe before '*' token
/usr/include/gtk/gtkitemfactory.h:213: error: erreur de syntaxe before "n_entries"
/usr/include/gtk/gtkitemfactory.h:215: error: erreur de syntaxe before '*' token
/usr/include/gtk/gtkitemfactory.h:218: error: erreur de syntaxe before "gpointer"
/usr/include/gtk/gtkitemfactory.h:221: error: erreur de syntaxe before "guint"
In file included from /usr/include/gtk/gtk.h:82,
from test.c:2:
/usr/include/gtk/gtklayout.h:52: error: field `container' has incomplete type
/usr/include/gtk/gtklayout.h:54: error: erreur de syntaxe before "GList"
/usr/include/gtk/gtklayout.h:56: error: `width' redeclared as different kind of symbol
/usr/include/gtk/gtkclist.h:327: error: previous declaration of `width'
/usr/include/gtk/gtklayout.h:57: error: erreur de syntaxe before "height"
/usr/include/gtk/gtklayout.h:57: error: `height' redeclared as different kind of symbol
/usr/include/gtk/gtkcurve.h:61: error: previous declaration of `height'
/usr/include/gtk/gtklayout.h:59: error: erreur de syntaxe before "xoffset"
/usr/include/gtk/gtklayout.h:60: error: erreur de syntaxe before "yoffset"
[/#e2001c]
 
et ca continue jvoulais savoir comment configurer gcc pour qu'il compile sans faute le programme
 
mon code est simple et est le suivant
 
 
 

Code :
  1. #include <stdlib.h>
  2. #include <gtk/gtk.h>
  3. int main(int argc, char **argv)
  4. {
  5.     /* Initialisation de GTK+ */
  6.     gtk_init(&argc, &argv);
  7.     return EXIT_SUCCESS;
  8. }


 
c celui du lien  :whistle:

Reply

Marsh Posté le 13-01-2005 à 13:13:12    

Personellement j'utilise encore gtk 1.4 et n'envisage pas pour l'instant de changer de version
en gtk 1.4 la commande à lancer est :
gcc -o test test.c `gnomeconfig --cflags --libs gnomeui`
je suppose que pour gtk 2.4 il faut faire
gcc -o test test.c `pkg-config --cflags --libs gtk+-2.0`
au vu des erreurs, il se peut que les gtkitemfactory soient une extension apportée par glade et il faut donc ajouter les includes et librairies correspondantes. Je n'ai personnellement jamais employé de gtkitemfactory et ignore à quoi sa sert.
Il peut être interessant d'essayer de compiler le programme test.c dans l'environnement de glade pour voir si cela passe.
J'ai essayé glade une fois et au vu de sa production (un tat de fichiers avec plein d'anglais partout), j'ai décidé de l'abandonner définitivement car j'aime maitriser au maximum ce que je fais et que cela soit simple.

Reply

Marsh Posté le 13-01-2005 à 17:58:58    

enfin de compte ca a marché avec
gcc -Wall -o test test.c `pkg-config --cflags --libs gtk+-2.0`
mais maintenant je cherche des tutorials sur gtkdrawingarea et les fonctions tels que drawcircle et drawrectangles
c tres urgent si tu peux me fournir du code et des liens  
merci

Reply

Marsh Posté le 14-01-2005 à 12:25:18    

Comme documentation, j'utilise principalement le livre sur le GTK+ publié chez Eyrolles il y a au moins 2 ans. Je ne suis jamais parvenu à faire du dessin avec gtk+ j'utilise le gdk dans des gdkwindows qui est le sous ensemble de gtk pour la gestion bas niveau. Le plus difficile à faire est de maitriser les évènements pour afficher ce qui est dessiné à l'écran.
Je n'est pas de lien en français et ne consulte pas ce qui est en anglais.
Je ne peux pas fournir de code vu que je fais du gtk chez moi, que je n'ai pas d'accès internet depuis chez moi et ne vait sur ce forum qu'à la pause de midi les jours de boulot.
J'ai vu une fois un forum spétialisé dans le gtk sur un site d'association linux mais je ne me rapelle plus où et il était au démarrage.
Bon courage

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed