*#include static int cb_mouse_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { int x = event->x; int y = event->y; GdkWindow *drawable = widget->window; cairo_t *cr; cairo_surface_t *surface; if(x >= 500 && y >=500) { cr = gdk_cairo_create (drawable); surface = cairo_image_surface_create_from_png ("./kakiku.png"); cairo_set_source_surface (cr, surface, 0.0, 0.0); cairo_paint (cr); cairo_destroy (cr); return FALSE; } if(x >= 0 && y >=300) { cr = gdk_cairo_create (drawable); surface = cairo_image_surface_create_from_png ("./birds.png"); cairo_set_source_surface (cr, surface, 0.0, 0.0); cairo_paint (cr); cairo_destroy (cr); return FALSE; } } gboolean cb_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { GdkWindow *drawable = widget->window; cairo_t *cr; cairo_surface_t *surface; cr = gdk_cairo_create (drawable); surface = (cairo_surface_t *) user_data; cairo_set_source_surface (cr, surface, 0.0, 0.0); cairo_paint (cr); cairo_destroy (cr); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *canvas; cairo_surface_t *surface, *newsurface; char *name; name = "./aiu.png"; gtk_init (&argc, &argv); surface = cairo_image_surface_create_from_png (name); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window), "cairo_source_image_surface Sample"); gtk_widget_set_size_request (window, cairo_image_surface_get_width(surface) * 1.0, cairo_image_surface_get_height(surface) * 1.0); g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); canvas = gtk_drawing_area_new (); gtk_container_add (GTK_CONTAINER(window), canvas); gtk_widget_set_events(canvas,GDK_BUTTON_PRESS_MASK); g_signal_connect (G_OBJECT(canvas), "expose_event", G_CALLBACK (cb_expose_event), surface); g_signal_connect(G_OBJECT(canvas), "button_press_event", G_CALLBACK(cb_mouse_press),NULL); gtk_widget_show_all (window); gtk_main(); cairo_surface_destroy (surface); return 0; } * >>{16::gr01}{Top画面へ}