Bonjour Bonjour,

Voici ce que je souhaite faire :
1 Charger un png
2 cliquer 4 points sur l'image
3 Créer un masque (quadrilatère) afin de faire un et logique avec mon image
4 Sauvegarder l'image

Ce que j'ai réussi à faire :
a) Charger le png dans un GTK_IMAGE
b) Enregistrer un pixbuf
c) j'ai les coordonnées de mon quadrilatère

Ce que je ne comprends pas :
Le masque doit être un gdk_pixmap, gtk_pixmap, gdk_pixbuf, gtk_pixbuf?
Pour le et logique, mon image originale doit être un gdk_pixmap, gtk_pixmap, gdk_pixbuf, gtk_pixbuf?

Le cooooode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// On récupère l'image dans un pixbuf
           if ( !(pix_buf = gtk_image_get_pixbuf(GTK_IMAGE(ps_Struct->p_image[i]))))
           {
               printf("Erreur get pixbuf 1\n");
           }

          // Creation du masque (pixmap), myWin est un gdk_window, a priori le parent on s'en fout puisque c'est pour le ET logique
           if (!( 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)))
           {

               printf("Erreur new pixmap\n");
           }

          // Dessin de mon quadrilatere sur le masque :
           gdk_draw_rectangle (pix_map,
                      pWidget->style->white_gc,
                      TRUE,
                      0, 0, 40, 40);

         // Comment convoluer mon masque avec l'image? dois-je avoir 2 pixbuf ou 2 pixmap?
      

        // Enregistrement du pixbuf :

       if( !gdk_pixbuf_save(pix_buf, c_chemin_complet, "jpeg", (GError **) err, "quality", "100", NULL) )
	{
            printf("Erreur save pixbuf\n");
        }
Je craque, j'ai vraiment du mal à saisir le mécanisme de dessin GTK