| 12
 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