краткое описание#include <gtk/gtk.h> gtkdrawingarea; gtkwidget* gtk_drawing_area_new (void); void gtk_drawing_area_size (gtkdrawingarea *darea, gint width, gint height); иерархия объектовgobject +----ginitiallyunowned +----gtkobject +----gtkwidget +----gtkdrawingarea +----gtkcurve реализуемые интерфейсыgtkdrawingarea реализует atkimplementoriface. описаниеgtkdrawingarea
используется для создания настраиваемых
элементов пользовательского интерфейса.
это по существу пустой виджет; вы можете
отобразить
следующая часть кода демонстрирует использование области рисования для отображения круга в обычном цвете символов виджета. помните, gdk автоматически очищает просматриваемую область до цвета фона перед ответом на событие экспонирования, а рисунок не явно прикреплён к области просмотра. пример 1. простое использование gtkdrawingarea. gboolean expose_event_callback (gtkwidget *widget, gdkeventexpose *event, gpointer data) { gdk_draw_arc (widget->window, widget->style->fg_gc[gtk_widget_state (widget)], true, 0, 0, widget->allocation.width, widget->allocation.height, 0, 64 * 360); return true; } [...] gtkwidget *drawing_area = gtk_drawing_area_new (); gtk_widget_set_size_request (drawing_area, 100, 100); g_signal_connect (g_object (drawing_area), "expose_event", g_callback (expose_event_callback), null);
событие экспонирования обычно происходит,
когда область рисования в первый раз
появляется на экране, или когда она
закрыта другим окном а затем снова
открывается (exposed). вы так же можете
принудительно добавить событие
экспонирования к "повреждённому
участку" области рисования окна; для
этого используйте доступные подпрограммы для рисования
доступны на страницах gdk
drawing primitives. смотрите также
для реакции на события мышки в области
рисования, вы должны включить их с
помощью деталиgtkdrawingareatypedef struct _gtkdrawingarea gtkdrawingarea; структура gtkdrawingarea содержит только закрытые данные, доступ к которым разрешён только функциям описанным ниже. gtk_drawing_area_new ()gtkwidget* gtk_drawing_area_new (void); создаёт новую область рисования.
gtk_drawing_area_size ()void gtk_drawing_area_size (gtkdrawingarea *darea, gint width, gint height); внимание
(вместо неё используйте
смотрите такжеиногда gtkimage полезен
как альтернатива области рисования. вы
можете поместить gdkpixmap
в gtkimage и рисовать в
gdkpixmap,
вызывая |