The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Implemented Interfaces

GtkDrawingArea

GtkDrawingArea Виджет для настраиваемых элементов пользовательского интерфейса

Краткое описание

#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 используется для создания настраиваемых элементов пользовательского интерфейса. Это по существу пустой виджет; вы можете отобразить widget->window. После создания области для рисования, приложение может подключать:

Следующая часть кода демонстрирует использование области рисования для отображения круга в обычном цвете символов виджета. Помните, 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). Вы так же можете принудительно добавить событие экспонирования к "повреждённому участку" области рисования окна; для этого используйте gtk_widget_queue_draw_area() и gdk_window_invalidate_rect() являющиеся эквивалентными. Так вы получите событие экспонирования для несуществующего участка.

Доступные подпрограммы для рисования доступны на страницах GDK Drawing Primitives. Смотрите также gdk_pixbuf_render_to_drawable() для рисования GdkPixbuf.

Для реакции на события мышки в области рисования, вы должны включить их с помощью gtk_widget_add_events(). Для реакции на события клавиатуры, вы должны установить флаг GTK_CAN_FOCUS в области рисования и вероятно должны нарисовать некоторую индикацию видимую пользователем которая находится в фокусе области рисования. Используйте GTK_HAS_FOCUS() макрос в вашем обработчике экспонирующего события для решения, изображать ли указатель фокуса. Смотрите gtk_paint_focus() как один из способов для изображения фокуса.

Детали

GtkDrawingArea

typedef struct _GtkDrawingArea GtkDrawingArea;

Структура GtkDrawingArea содержит только закрытые данные, доступ к которым разрешён только функциям описанным ниже.


gtk_drawing_area_new ()

GtkWidget*  gtk_drawing_area_new            (void);

Создаёт новую область рисования.

Возвращает :

новый GtkDrawingArea


gtk_drawing_area_size ()

void        gtk_drawing_area_size           (GtkDrawingArea *darea,
                                             gint width,
                                             gint height);

Внимание

gtk_drawing_area_size устарела и не должна использоваться во вновь создаваемом коде.

(Вместо неё используйте gtk_widget_set_size_request().) Устанавливает размер области рисования в ответ на сигнал "size_request". Область рисования в действительности может занимать больший размер чем распределено, это зависит от того как она упакована в контейнер.

darea :

GtkDrawingArea.

width :

Запрашиваемая ширина.

height :

Запрашиваемая высота.

Смотрите также

Иногда GtkImage полезен как альтернатива области рисования. Вы можете поместить GdkPixmap в GtkImage и рисовать в GdkPixmap, вызывая gtk_widget_queue_draw() для GtkImage когда вам нужно обновить экран.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру