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