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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| /*-------------------------------------------------------------*/
/* en cas d'agrandissement / deplacement de la fen. graphique */
/*------------------------------------------------------------*/
static gboolean rafraichissement( GtkWidget *pDrawable, GdkEventExpose *event )
{
gdk_draw_drawable( pDrawable->window, pDrawable->style->fg_gc[GTK_WIDGET_STATE(pDrawable)],
pixmap, event->area.x, event->area.y, event->area.x,
event->area.y, -1, -1 );
return FALSE;
}
/*-------------------------------------------------------------*/
/* la trajectoire : tracer */
/*------------------------------------------------------------*/
static gboolean trace_trajectoire(GtkWidget *pDrawable)
{
int i;
gtk_grab_add(pDrawable);
for (i=0; i< 413; i++)
{
gdk_draw_line(pixmap, gc, 8*Matrice_t[i][0], 8*Matrice_t[i][1], 8*Matrice_t[i+1][0],8* Matrice_t[i+1][1]);
gtk_main_iteration ();
}
gtk_grab_remove(pDrawable);
return (FALSE);
}
/*-------------------------------------------------------------*/
/* appel de trace_trajectoire() dans une fonction elle même invoquée par
g_signal_connect(G_OBJECT(pButton2), "clicked",
G_CALLBACK(FenetreGraphique), NULL);
/*------------------------------------------------------------*/
/....
gtk_widget_show (pDrawable);
gtk_widget_show (window);
charge_trajectoire(); // charger la Matrice_t de la trajectoire
gdk_gc_set_foreground (gc, &couleur[25]); // couleur rouge fonce pour la trajectoire
data = pDrawable;
g_timeout_add(100,trace_trajectoire, data) ; // appels a intervalles reguliers
return(0);
} |
Partager