#include #define XSIZE 600 #define YSIZE 400 /* This routine gets control when the close button is clicked */ gint close_application( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return FALSE; } /* The main routine */ int main( int argc, char *argv[] ) { GtkWidget *window, *drawing_area; GdkColor *color; GdkGC *gc; guint16 red = 100, green = 0, blue = 0; /* Initialize GTK and create the main window */ gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (close_application), NULL); drawing_area = gtk_drawing_area_new (); gtk_container_add (GTK_CONTAINER (window), drawing_area); gtk_widget_set_size_request (GTK_WIDGET (drawing_area), XSIZE, YSIZE); gtk_widget_realize(drawing_area); /* first, create a GC to draw on */ gc = gdk_gc_new(drawing_area->window); /* the color we want to use */ color = (GdkColor *) g_malloc(sizeof(GdkColor)); color->red = red * (65535/255); color->green = green * (65535/255); color->blue = blue * (65535/255); color->pixel = (gulong)(red*65536 + green*256 + blue); gdk_color_alloc(gtk_widget_get_colormap(drawing_area), color); gdk_gc_set_foreground(gc, color); g_free(color); gdk_gc_set_line_attributes(gc, 8, GDK_LINE_SOLID, GDK_CAP_NOT_LAST, GDK_JOIN_MITER); gdk_draw_line(drawing_area->window, gc, 0, 0, 300, 300); /* Now show everything */ gtk_widget_show (drawing_area); gtk_widget_show (window); gtk_main (); return 0; }