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 49 50 51 52 53 54 55 56 57 58
| #include <stdlib.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <cairo.h>
gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget));
GdkRectangle da; //Dimensions de la GtkDrawingArea */
/* bizarrement il n'y a pas le paramètre depth comme marqué dans le manuel officiel... */
gdk_window_get_geometry (gtk_widget_get_window(widget), &da.x, &da.y, &da.width, &da.height);
/* affiche dans la console les dimension de ma GTK_GRID */
printf("x = %d, y = %d, width = %d, height = %d\n", da.x, da.y, da.width, da.height);
cairo_set_source_rgb (cr, 0.0 , 0.0 , 0.0); //fond noir
cairo_paint (cr);
cairo_destroy (cr);
return FALSE;
}
int main (int argc, char * argv [])
{
GtkWidget * win;
GtkWidget * area;
GtkWidget * table;
gtk_init (& argc, & argv);
/* description de la fenetre */
win= gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (win, 800, 600);
g_signal_connect (G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), NULL);
/* Créatione st insertion de zone de dessin dans la table */
table = gtk_grid_new();
gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table));
/* Création de la table */
area = gtk_drawing_area_new ();
gtk_grid_attach(GTK_GRID (table), area, 0, 0, 1, 1);
// gtk_container_add (GTK_CONTAINER (win), area);
/* j'avais mis area au lieu de table comme premier paramètre mais
dans ce cas la fenetre ce colorie pas... */
g_signal_connect (G_OBJECT (table), "draw", G_CALLBACK (on_draw), NULL);
gtk_widget_show_all (win);
gtk_main ();
return 0;
} |
Partager