El widget de área de dibujo

El widget DrawingArea es una ventana vacía que le da la libertad de crear cualquier gráfico que desee. Junto con esa libertad viene la responsabilidad de manejar las señales de dibujo en el widget. Cuando un widget se muestra por primera vez, o cuando se cubre y descubre, debe redibujarse a sí mismo. La mayoría de los widgets tiene código para hacer esto, pero el área de dibujo no, permitiéndole escribir su propio manejador de señales de dibujo para determinar cómo se dibujarán los contenidos del widget. La mayor parte de las veces, esto se hace sobrecargando la función miembro virtual on_draw().

GTK+ usa la API de dibujo Cairo. Con Gtkmm, puede usar la API C++ cairomm para Cairo.

Puede dibujar formas muy sofisticadas usando Cairo, pero los métodos para hacerlo son bastante básicos. Cairo proporciona métodos para dibujar líneas rectas, curvas, y arcos (incluyendo círculos). Estas formas básicas pueden combinarse para crear formas más complejas y caminos que pueden llenarse con colores sólidos, gradientes, patrones, y otras cosas. Además, Cairo puede realizar transformaciones complejas, componer imágenes, y generar texto con «antialiasing».

Cairo y Pango

A pesar de que Cairo puede generar texto, no está pensado para reemplazar a Pango. Pango es una mejor elección si necesita generar texto más avanzado, por ejemplo, con ajuste de línea o elipses. Sólo debe dibujar texto con Cairo si éste es parte de un gráfico.

En esta sección del tutorial, se cubrirá el modelo básico de dibujo con Cairo, describiendo cada uno de los elementos básicos de dibujo (con ejemplos), y luego se prsentará una aplicación simple que usa Cairo para dibujar un widget de reloj personalizado.