GDK_IS_DRAWABLE (drawable)' failed. Dessin avec GTK

GDK_IS_DRAWABLE (drawable)' failed. Dessin avec GTK - C - Programmation

Marsh Posté le 25-04-2008 à 10:56:33    

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 :
  1. // Chargement du pixbuf
  2.            pix_buf = gtk_image_get_pixbuf(ps_Struct->p_image[i]);
  3.            // Creation pixmap
  4.     pix_map=gdk_pixmap_new(ps_Struct->p_window,
  5.                                gdk_pixbuf_get_width(pix_buf),
  6.                                gdk_pixbuf_get_height(pix_buf),
  7.                                gdk_visual_get_system()->depth);
  8.     // Insertion du pixbuf dans le pixmap
  9.     gdk_draw_pixbuf(pix_map, ps_Struct->p_window->style->fg_gc[GTK_WIDGET_STATE ( ps_Struct->p_window)],
  10.                     pix_buf,0,0,0,0,
  11.                     gdk_pixbuf_get_width(pix_buf),
  12.                     gdk_pixbuf_get_height(pix_buf),
  13.                     gdk_visual_get_system()->depth,0,0);
  14. // Sauvegarde du pixbuf
  15.   if( !gdk_pixbuf_save(pix_map, c_chemin_complet, "jpeg", (GError **) NULL, "quality", "100", NULL) )
  16. {
  17.             printf("Erreur save pixbuf\n" );
  18.         }


 
Marche pas :  

Code :
  1. (visu_detou:31537): Gdk-CRITICAL **: gdk_draw_pixbuf: assertion `GDK_IS_PIXBUF (pixbuf)' failed
  2. (visu_detou:31537): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
  3. (visu_detou:31537): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
  4. (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


 
 
 [:dur]  
 
Julien.


Message édité par jijiz le 25-04-2008 à 15:34:04
Reply

Marsh Posté le 25-04-2008 à 10:56:33   

Reply

Marsh Posté le 25-04-2008 à 14:38:04    

je me demande si ca ne vient pas du fait que mon  gdk_window_new soit un gTk_window et non un gDk_window

Reply

Marsh Posté le 28-04-2008 à 09:02:41    

up

Reply

Marsh Posté le 28-04-2008 à 15:13:49    

up

Reply

Sujets relatifs:

Leave a Replay

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