jijiz | Bonjour à tous,
J'éssaye de déclarer un pixmap et de tracer un rectangle sur celui-ci. Or à l'exécution, le programme retourne l'erreur suivante :
(visu_detou:27739): Gdk-CRITICAL **: gdk_draw_rectangle: assertion `GDK_IS_DRAWABLE (drawable)' failed
t_chemin_images : /home/julien/Edres-svn/tools/aaaImg/ |
Voici le code :
GdkPixmap *pix_masque;
pix_masque = gdk_pixmap_new(ps_Struct->p_window,
400,
300,-1);
GdkGC *gc;
gc = gdk_gc_new(ps_Struct->p_image[i]->window);
gdk_draw_rectangle(pix_masque, gc, TRUE,0,0,60,60); |
J'ai également éssayé de récuperer le pixbuf d'une image existante et tracer dessus :
pix_masque = gtk_image_get_pixbuf(ps_Struct->p_image[i]); |
Voila, je pense que je n'ai pas encore compri très bien le mécanisme de dessin avec GTK, Merci de m'éclairer.
TEST 2:
Je met mon pix buf dans un pix map pour le manipuler effectuer un traitement.
Code :
- // Chargement du pixbuf
- pix_buf = gtk_image_get_pixbuf(ps_Struct->p_image[i]);
- // Creation pixmap
- pix_map=gdk_pixmap_new(ps_Struct->p_window,
- gdk_pixbuf_get_width(pix_buf),
- gdk_pixbuf_get_height(pix_buf),
- gdk_visual_get_system()->depth);
- // Insertion du pixbuf dans le pixmap
- gdk_draw_pixbuf(pix_map, ps_Struct->p_window->style->fg_gc[GTK_WIDGET_STATE ( ps_Struct->p_window)],
- pix_buf,0,0,0,0,
- gdk_pixbuf_get_width(pix_buf),
- gdk_pixbuf_get_height(pix_buf),
- gdk_visual_get_system()->depth,0,0);
- // Sauvegarde du pixbuf
- if( !gdk_pixbuf_save(pix_map, c_chemin_complet, "jpeg", (GError **) NULL, "quality", "100", NULL) )
- {
- printf("Erreur save pixbuf\n" );
- }
|
Marche pas :
Code :
- (visu_detou:31537): Gdk-CRITICAL **: gdk_draw_pixbuf: assertion `GDK_IS_PIXBUF (pixbuf)' failed
- (visu_detou:31537): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
- (visu_detou:31537): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
- (visu_detou:31537): Gdk-CRITICAL **: gdk_draw_pixbuf: assertion `GDK_IS_PIXBUF (pixbuf)' failed
|
TEST 3 :
Creation gDk_window sur laquelle je fais le test 2 :
GdkWindowAttr attributes;
gint attributes_mask;
attributes_mask = GDK_WA_VISUAL | GDK_WA_X | GDK_WA_Y | GDK_WA_COLORMAP;
myWin = gdk_window_new (ps_Struct->p_window, &attributes, attributes_mask);
// Chargement du pixbuf
pix_buf = gtk_image_get_pixbuf(GTK_IMAGE(ps_Struct->p_image[i]));
// Creation pixmap
pix_map = gdk_pixmap_new(myWin,
gdk_pixbuf_get_width(GDK_PIXBUF(pix_buf)),
gdk_pixbuf_get_height(GDK_PIXBUF(pix_buf)),
gdk_visual_get_system()->depth);
// Insertion du pixbuf dans le pixmap
gdk_draw_pixbuf(pix_map, ps_Struct->p_window->style->fg_gc[GTK_WIDGET_STATE ( ps_Struct->p_window)],
GDK_PIXBUF(pix_buf),0,0,0,0,
gdk_pixbuf_get_width(pix_buf),
gdk_pixbuf_get_height(pix_buf),
gdk_visual_get_system()->depth,0,0);
|
mais... toujours pas :
(visu_detou:5094): Gdk-CRITICAL **: gdk_drawable_get_screen: assertion `GDK_IS_DRAWABLE (drawable)' failed
(visu_detou:5094): Gdk-CRITICAL **: gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
(visu_detou:5094): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(visu_detou:5094): Gdk-CRITICAL **: gdk_draw_pixbuf: assertion `GDK_IS_PIXBUF (pixbuf)' failed |
Julien. Message édité par jijiz le 25-04-2008 à 15:34:04
|