Bonjour,

je souhaiterai savoir s'il serait possible de créer calques lorsque je dessine avec cairo ?

A l'aide de Pixbuf je charge une image (une carte), et avec cairo je place des points dessus. Mon problème est que je souhaiterai avoir plusieurs types de points (sur des calques différents), ainsi que pouvoir choisir quels calques afficher.

Je ne vois pas trop comment faire, je découvre cette bibliothèque.

En vous remerciant par avance,

Cordialement
Reverse_

PS : voici ma fonction de dessin

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
void cb_image_annotate(GtkImageViewer *imgv, GdkPixbuf *pixbuf, gint shift_x, gint shift_y, gdouble scale_x, gdouble scale_y, gpointer user_data)
{
    int img_width = gdk_pixbuf_get_width(pixbuf);
    int img_height = gdk_pixbuf_get_height(pixbuf);
 
    cairo_surface_t *surface = cairo_image_surface_create_for_data(gdk_pixbuf_get_pixels(pixbuf), CAIRO_FORMAT_RGB24, img_width, img_height, gdk_pixbuf_get_rowstride(pixbuf));
    cairo_t *cr = cairo_create (surface);
    cairo_translate(cr, -shift_x, -shift_y);
    cairo_scale(cr, scale_x, scale_y);
 
    cairo_set_source_rgba (cr, 0,0,1.0,0.6);
    cairo_set_line_width(cr, 3);
 
    struct node_point *p_node = header.first;
 
    while(p_node)
    {
 
        cairo_arc(cr, p_node->current.x, p_node->current.y, 12, 0.0, 2*G_PI);
        cairo_stroke(cr);
 
        p_node = p_node->next;
    }
 
    cairo_surface_destroy(surface);
    cairo_destroy(cr);
 
    (void)imgv;
    (void)user_data;
}