Programación en el entorno GNOME |
---|
En este ejemplo se muestra cómo poner varios objetos sobre el canvas. Para la imagen se ha escogido el fichero gnome.png y para el widget se ha creado un botón.
Ejemplo 5. Objetos en el canvas
#include <gnome.h> int main(int argc, char** argv) { GtkWidget *window; GtkWidget *canvas; GtkWidget *button; GtkWidget *scrolled; GdkPixbuf *pixbuf; GnomeCanvasGroup *root; GnomeCanvasPoints *points; /* inicializamos las librerías */ gnome_init("objects-canvas", "0.1", argc, argv); /* crear una ventana que contenga al canvas */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, 0); /* ventana para tener barras de desplazamiento */ scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(window), scrolled); /* canvas en modo RGB */ canvas = gnome_canvas_new_aa(); gtk_container_add(GTK_CONTAINER(scrolled), canvas); gnome_canvas_set_scroll_region(GNOME_CANVAS(canvas), -10.0, -10.0, 400.0, 400.0); root = gnome_canvas_root(GNOME_CANVAS(canvas)); /* un rectángulo simple */ gnome_canvas_item_new(root, gnome_canvas_rect_get_type(), "x1", 50.0, "y1", 50.0, "x2", 100.0, "y2", 100.0, "fill_color_rgba", 0x00ffffff, "outline_color", "black", "width_units", 1.0, NULL); /* círculo, con fondo semitransparente */ gnome_canvas_item_new(root, gnome_canvas_ellipse_get_type(), "x1", 60.0, "y1", 60.0, "x2", 220.0, "y2", 220.0, "fill_color_rgba", 0x00ff0077, "outline_color", "black", "width_units", 2.0, NULL); /* polígono con forma de V */ points = gnome_canvas_points_new(6); /* 6 puntos */ points->coords[0] = 0; points->coords[1] = 0; points->coords[2] = 20; points->coords[3] = 0; points->coords[4] = 50; points->coords[5] = 70; points->coords[6] = 80; points->coords[7] = 0; points->coords[8] = 100; points->coords[9] = 0; points->coords[10] = 50; points->coords[11] = 90; gnome_canvas_item_new(root, gnome_canvas_polygon_get_type(), "points", points, "fill_color_rgba", 0xff444444, "outline_color", "black", "width_units", 1.0, NULL); /* borrar los puntos */ gnome_canvas_points_unref(points); /* Crear un objeto de texto sobre la figura */ gnome_canvas_item_new(root, gnome_canvas_text_get_type(), "font", "Sans 10", "markup", "GNOME2 <i>GnomeCanvas</i>\n<b>Prueba de texto</b>", "fill_color", "black", "x", 10.0, "y", 160.0, "anchor", GTK_ANCHOR_WEST, NULL); /* Crear un botón con la etiqueta "Botón para GnomeCanvas" */ button = gtk_button_new_with_label("Botón para GnomeCanvas"); gnome_canvas_item_new(root, gnome_canvas_widget_get_type(), "widget", button, "x", 10.0, "y", 190.0, "width", 200.0, "height", 50.0, NULL); /* Cargar la imagen del archivo gnome.png y ponerla en el canvas */ pixbuf = gdk_pixbuf_new_from_file("gnome.png", NULL); gnome_canvas_item_new(root, gnome_canvas_pixbuf_get_type(), "pixbuf", pixbuf, "x", 250.0, "y", 50.0, "width", 200.0, "height", 200.0, NULL); gdk_pixbuf_unref(pixbuf); /* mostrar los widgets creados y entrar en el bucle gtk_main */ gtk_widget_show_all(window); gtk_main(); }
<< Objetos por defecto | Trabajar con los objetos >> |