Bonjour.
Je travaille actuellement avec la bibliothèque GTK+-1.2.
J'ai sur mon application une gtk_drawing_area dans laquelle je souhaite dessiner une cercle et dans ce cercle des polygones, et de plusieurs boutons servants à dessiner ces deux dernieres figures. Jusque la, aucun problème.
A partir de ce moment, j'ai déjà déclaré 4 évènements, un pour construire la drawing area lorsque je relance mon application et une pour reconstruire cette zone lorsqu'elle a été cachée par une autre fenetre ou a été sortie de l'écran, que je déclarent comme ca :
Ensuite j'en déclare deux autres associées à mes boutons "Cercle" et "Polygone" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gtk_signal_connect( GTK_OBJECT(aire), "configure_event", GTK_SIGNAL_FUNC (configure_event), NULL ); gtk_signal_connect( GTK_OBJECT(aire), "expose_event", GTK_SIGNAL_FUNC (expose_event), NULL );
J'en arrive donc à mon problème, je dessine correctement ma figure mais elle ne s'affiche que lorsque je cache la drawing area pour lancer le rafraichissement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerCercle), NULL); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerPoly), NULL);
Voici le code de mes fonctions :
J'ai contience que c'est ma fonction gdk_draw_pixmap qui ne marche pas dans ma fonction creerCercle, mais je ne vois pas de solution...
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 static GdkPixmap *pixmap = NULL; gint creerCercle (GtkWidget *widget, gpointer *data) { gdk_draw_rectangle (pixmap, aire->style->black_gc, TRUE, 50, 50, 150, 150); gdk_draw_pixmap(aire->window, aire->style->fg_gc[GTK_WIDGET_STATE (aire)], pixmap, 0, 0, 500, 500, -1, -1); return TRUE; } static gint configure_event(GtkWidget *aire, GdkEventConfigure *event) { /*if (pixmap) //Detruit le pixmap s'il existe déjà pour le remplacer { gdk_pixmap_destroy(pixmap); }*/ pixmap = gdk_pixmap_new(aire->window, aire->allocation.width, aire->allocation.height, -1); gdk_draw_rectangle (pixmap, aire->style->white_gc, TRUE, 0, 0, aire->allocation.width, aire->allocation.height); return TRUE; } static gint expose_event(GtkWidget *widget, GdkEventExpose *event) { gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); return FALSE; }
Merci d'avance pour votre aide !
Partager