Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Properties

GtkImage

GtkImage Виджет отображающий изображение

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

#include <gtk/gtk.h> GtkImage; enum GtkImageType; void gtk_image_get_icon_set (GtkImage *image, GtkIconSet **icon_set, GtkIconSize *size); void gtk_image_get_image (GtkImage *image, GdkImage **gdk_image, GdkBitmap **mask); GdkPixbuf* gtk_image_get_pixbuf (GtkImage *image); void gtk_image_get_pixmap (GtkImage *image, GdkPixmap **pixmap, GdkBitmap **mask); void gtk_image_get_stock (GtkImage *image, gchar **stock_id, GtkIconSize *size); GdkPixbufAnimation* gtk_image_get_animation (GtkImage *image); void gtk_image_get_icon_name (GtkImage *image, G_CONST_RETURN gchar **icon_name, GtkIconSize *size); GtkImageType gtk_image_get_storage_type (GtkImage *image); GtkWidget* gtk_image_new_from_file (const gchar *filename); GtkWidget* gtk_image_new_from_icon_set (GtkIconSet *icon_set, GtkIconSize size); GtkWidget* gtk_image_new_from_image (GdkImage *image, GdkBitmap *mask); GtkWidget* gtk_image_new_from_pixbuf (GdkPixbuf *pixbuf); GtkWidget* gtk_image_new_from_pixmap (GdkPixmap *pixmap, GdkBitmap *mask); GtkWidget* gtk_image_new_from_stock (const gchar *stock_id, GtkIconSize size); GtkWidget* gtk_image_new_from_animation (GdkPixbufAnimation *animation); GtkWidget* gtk_image_new_from_icon_name (const gchar *icon_name, GtkIconSize size); void gtk_image_set_from_file (GtkImage *image, const gchar *filename); void gtk_image_set_from_icon_set (GtkImage *image, GtkIconSet *icon_set, GtkIconSize size); void gtk_image_set_from_image (GtkImage *image, GdkImage *gdk_image, GdkBitmap *mask); void gtk_image_set_from_pixbuf (GtkImage *image, GdkPixbuf *pixbuf); void gtk_image_set_from_pixmap (GtkImage *image, GdkPixmap *pixmap, GdkBitmap *mask); void gtk_image_set_from_stock (GtkImage *image, const gchar *stock_id, GtkIconSize size); void gtk_image_set_from_animation (GtkImage *image, GdkPixbufAnimation *animation); void gtk_image_set_from_icon_name (GtkImage *image, const gchar *icon_name, GtkIconSize size); void gtk_image_clear (GtkImage *image); GtkWidget* gtk_image_new (void); void gtk_image_set (GtkImage *image, GdkImage *val, GdkBitmap *mask); void gtk_image_get (GtkImage *image, GdkImage **val, GdkBitmap **mask); void gtk_image_set_pixel_size (GtkImage *image, gint pixel_size); gint gtk_image_get_pixel_size (GtkImage *image);

Иерархия объектов

GObject +----GInitiallyUnowned +----GtkObject +----GtkWidget +----GtkMisc +----GtkImage

Осуществляемые интерфейсы

GtkImage осуществляет AtkImplementorIface.

Свойства

"file" gchararray : Read / Write "icon-name" gchararray : Read / Write "icon-set" GtkIconSet : Read / Write "icon-size" gint : Read / Write "image" GdkImage : Read / Write "mask" GdkPixmap : Read / Write "pixbuf" GdkPixbuf : Read / Write "pixbuf-animation" GdkPixbufAnimation : Read / Write "pixel-size" gint : Read / Write "pixmap" GdkPixmap : Read / Write "stock" gchararray : Read / Write "storage-type" GtkImageType : Read

Описание

GtkImage виджет отображающий изображение. Различные виды объектов могут быть отображены как изображение; обычно вы будете загружать GdkPixbuf ("буфер пикселей") из файла для дальнейшего отображения. Для этого есть удобная функция gtk_image_new_from_file(), используемая следующим образом:

GtkWidget *image; image = gtk_image_new_from_file ("myfile.png");

Если загрузка файла не удалась, изображение будет содержать "broken image" значок подобно используемым во многих web-браузерах. Если вы хотите обрабатывать ошибки загрузки из файла самостоятельно, например для отображения сообщения об ошибке, то загрузите изображение с помощью gdk_pixbuf_new_from_file(), затем создайте GtkImage с помощью gtk_image_new_from_pixbuf().

Файл изображения может содержать анимацию, в этом случае GtkImage отобразит анимацию (GdkPixbufAnimation) вместо статичного изображения.

GtkImage подкласс GtkMisc, который предполагает что вы можете выравнивать его (центр, лево, право) и добавлять дополнения к нему, используя GtkMisc методы.

GtkImage это виджет "без окна" (не имеет собственного GdkWindow), поэтому по умолчанию не получает событий. Если вы хотите получить события на изображении, такие как щелчок мыши, поместите изображение в GtkEventBox, затем подключите сигнал события к контейнеру событий.

Пример 2. Обработка события нажатия кнопки на GtkImage.

static gboolean button_press_callback (GtkWidget *event_box, GdkEventButton *event, gpointer data) { g_print ("Event box clicked at coordinates %f,%f\n", event->x, event->y); /* Returning TRUE means we handled the event, so the signal * emission should be stopped (don't call any further * callbacks that may be connected). Return FALSE * to continue invoking callbacks. */ return TRUE; } static GtkWidget* create_image (void) { GtkWidget *image; GtkWidget *event_box; image = gtk_image_new_from_file ("myfile.png"); event_box = gtk_event_box_new (); gtk_container_add (GTK_CONTAINER (event_box), image); g_signal_connect (G_OBJECT (event_box), "button_press_event", G_CALLBACK (button_press_callback), image); return image; }

При обработке событий на контейнере событий, имейте в виду что координаты изображения могут отличаться от координат контейнера событий из-за параметров выравнивания и дополнительных настроек изображения (смотрите GtkMisc). Самый простой способ решения этой проблемы состоит в установке выравнивания в 0.0 (слева/сверху) и установки дополнений в ноль. Тогда начало изображения будет соответствовать началу контейнера событий.

Иногда приложения избегают зависимости от внешних файлов, таких как файлы изображений. GTK+ комплектуется программой для аннулирования этого, вызывая gdk-pixbuf-csource. Эта программа позволяет вам конвертировать изображение в декларацию переменной C, которая может быть загружена в GdkPixbuf используя gdk_pixbuf_new_from_inline().

Детали

GtkImage

typedef struct _GtkImage GtkImage;

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


перечисление GtkImageType

typedef enum { GTK_IMAGE_EMPTY, GTK_IMAGE_PIXMAP, GTK_IMAGE_IMAGE, GTK_IMAGE_PIXBUF, GTK_IMAGE_STOCK, GTK_IMAGE_ICON_SET, GTK_IMAGE_ANIMATION, GTK_IMAGE_ICON_NAME } GtkImageType;

Описывает представленные данные изображения используемые GtkImage. Если вы хотите использовать изображение из виджета, вы можете получить только текущеме сохранённое представление. Например если gtk_image_get_storage_type() возвращает GTK_IMAGE_PIXBUF, то вы можете вызвать gtk_image_get_pixbuf(), но не gtk_image_get_stock(). Для пустых изображений, вы можете запросить любой тип хранения (вызвав любую функцию "получения"), но они все вернут NULL значения.

GTK_IMAGE_EMPTY

Нет изображения отображаемого виджетом

GTK_IMAGE_PIXMAP

виджет содержит GdkPixmap

GTK_IMAGE_IMAGE

виджет содержит GdkImage

GTK_IMAGE_PIXBUF

виджет содержит GdkPixbuf

GTK_IMAGE_STOCK

виджет содержит заготовку именованного значка (смотрите Stock Items(3))

GTK_IMAGE_ICON_SET

виджет содержит GtkIconSet

GTK_IMAGE_ANIMATION

виджет содержит GdkPixbufAnimation

GTK_IMAGE_ICON_NAME


gtk_image_get_icon_set ()

void gtk_image_get_icon_set (GtkImage *image, GtkIconSet **icon_set, GtkIconSize *size);

Получает установки и размер значка отображаемого GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_ICON_SET (смотрите gtk_image_get_storage_type()).

image :

GtkImage

icon_set :

Размещение сохраняемого GtkIconSet

size :

Размер заготовки значка


gtk_image_get_image ()

void gtk_image_get_image (GtkImage *image, GdkImage **gdk_image, GdkBitmap **mask);

Получает GdkImage и маску отображаемую GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_IMAGE (смотрите gtk_image_get_storage_type()). Вызывающий эту функцию не владеет ссылкой на возвращаемое изображение и маску.

image :

GtkImage

gdk_image :

Размещение возвращаемого GtkImage

mask :

Размещение возвращаемого GdkBitmap


gtk_image_get_pixbuf ()

GdkPixbuf*  gtk_image_get_pixbuf            (GtkImage *image);

Получает GdkPixbuf отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_PIXBUF (смотрите gtk_image_get_storage_type()). Вызывающий функцию не владеет ссылкой на возвращаемый pixbuf.

image :

GtkImage

Возвращает :

отображаемый pixbuf, или NULL если изображение пустое


gtk_image_get_pixmap ()

void gtk_image_get_pixmap (GtkImage *image, GdkPixmap **pixmap, GdkBitmap **mask);

Получает pixmap и маску отображаемую GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_PIXMAP (смотрите gtk_image_get_storage_type()). Вызывающий функцию не владеет ссылкой на возвращаемую pixmap и маску.

image :

GtkImage

pixmap :

pixmap, или NULL

mask :

маска, или NULL


gtk_image_get_stock ()

void gtk_image_get_stock (GtkImage *image, gchar **stock_id, GtkIconSize *size);

Получает заготовленный именованный значок отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_STOCK (смотрите gtk_image_get_storage_type()). Возвращаемой строкой владеет GtkImage и она не должна освобождаться.

image :

GtkImage

stock_id :

Имя заготовленного значка

size :

Размер заготовленного значка


gtk_image_get_animation ()

GdkPixbufAnimation* gtk_image_get_animation (GtkImage *image);

Получает GdkPixbufAnimation отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_ANIMATION (смотрите gtk_image_get_storage_type()). Вызывающий функцию не владеет ссылкой на возвращаемую анимацию.

image :

GtkImage

Возвращает :

Отображаемая анимация, или NULL если изображение пустое


gtk_image_get_icon_name ()

void gtk_image_get_icon_name (GtkImage *image, G_CONST_RETURN gchar **icon_name, GtkIconSize *size);

Получает имя значка и размер отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_ICON_NAME (смотрите gtk_image_get_storage_type()). Возвращаемой строкой владеет GtkImage и она не должна освобождаться.

image :

GtkImage

icon_name :

Имя значка

size :

Размер значка

Начиная с версии 2.6


gtk_image_get_storage_type ()

GtkImageType gtk_image_get_storage_type     (GtkImage *image);

Получает тип представления используемый GtkImage для сохранения данных изображения. Если GtkImage не имеет данных изображения, возвращаемое значение будет GTK_IMAGE_EMPTY.

image :

GtkImage

Возвращает :

Используемое представление изображения


gtk_image_new_from_file ()

GtkWidget*  gtk_image_new_from_file         (const gchar *filename);

Создаёт новый GtkImage отображающий файл filename. Если файл не найден или не может быть загружен, результатом отображения GtkImage будет значок "broken image". Эта функция никогда не возвращает NULL, она всегда возвращает действующий GtkImage виджет.

Если файл содержит анимацию, изображение будет содержать анимацию.

Если вам нужно определить неудачную загрузку файла, используйте gdk_pixbuf_new_from_file() для самостоятельной загрузки файла и создайте GtkImage из pixbuf. ( А для анимации используйте gdk_pixbuf_animation_new_from_file()).

Тип хранения (gtk_image_get_storage_type()) изображения не определён, он будет соответствовать отображаемому файлу.

filename :

Имя файла

Возвращает :

новый GtkImage


gtk_image_new_from_icon_set ()

GtkWidget* gtk_image_new_from_icon_set (GtkIconSet *icon_set, GtkIconSize size);

Создаёт GtkImage отображающий набор значков. Типовые размеры наборов GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_SMALL_TOOLBAR. Вместо этой функции лучше создавать GtkIconFactory, помещая ваши наборы значков в производство значков (icon factory), добавляя производство значков к списку производств по умолчанию с помощью gtk_icon_factory_add_default(), а затем используя gtk_image_new_from_stock(). Это позволит темам отменять значок установленный вашим приложением.

GtkImage не предполагает ссылку на набор значков. GtkImage добавит собственную ссылку, вместо того, чтобы принять вашу.

icon_set :

GtkIconSet

size :

Размер заготовленного изображения

Возвращает :

новый GtkImage


gtk_image_new_from_image ()

GtkWidget* gtk_image_new_from_image (GdkImage *image, GdkBitmap *mask);

Создаёт виджет GtkImage отображающий image с mask. GdkImage клиентская сторона буфера изображения в формате пикселей текущемго экрана. GtkImage не предполагает ссылку для изображения или маски. GtkImage добавит собственную ссылку вместо вашей.

image :

GdkImage, или NULL

mask :

GdkBitmap, или NULL

Возвращает :

новый GtkImage


gtk_image_new_from_pixbuf ()

GtkWidget*  gtk_image_new_from_pixbuf       (GdkPixbuf *pixbuf);

Создаёт новый GtkImage отображающий pixbuf. GtkImage не предполагает ссылки для pixbuf. GtkImage добавит собственную ссылку вместо вашей.

Помните эта функция просто создаёт GtkImage из pixbuf. Созданный GtkImage не будет реагировать на изменение состояния. Если вам это нужно, вы должны использовать gtk_image_new_from_icon_set().

pixbuf :

GdkPixbuf, или NULL

Возвращает :

новый GtkImage


gtk_image_new_from_pixmap ()

GtkWidget* gtk_image_new_from_pixmap (GdkPixmap *pixmap, GdkBitmap *mask);

Создаёт GtkImage виджет отображающий pixmap с mask. GdkPixmap сторона сервера буфера изображения в формате пикселей текущемго экрана. GtkImage не предполагает ссылки на pixmap или маску. GtkImage добавит собственную ссылку вместо вашей.

pixmap :

GdkPixmap, или NULL

mask :

GdkBitmap, или NULL

Возвращает :

новый GtkImage


gtk_image_new_from_stock ()

GtkWidget* gtk_image_new_from_stock (const gchar *stock_id, GtkIconSize size);

Создаёт GtkImage отображающий заготовленный значок. Типичными именами заготовленных значков являются GTK_STOCK_OPEN, GTK_STOCK_EXIT. Типичные размеры GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_SMALL_TOOLBAR. Если имя заготовленного значка не известно, изображение будет пустым. Вы можете указать своё собственное имя заготовленного значка, смотрите gtk_icon_factory_add_default() и gtk_icon_factory_add().

stock_id :

Имя заготовленного значка

size :

Размер заготовленного значка

Возвращает :

новый GtkImage отображающий заготовленный значок


gtk_image_new_from_animation ()

GtkWidget*  gtk_image_new_from_animation    (GdkPixbufAnimation *animation);

Создаёт GtkImage отображающий данную анимацию. GtkImage не предполагает ссылку на анимацию. GtkImage добавляет собственную ссылку вместо вашей.

animation :

анимация

Возвращает :

Новый виджет GtkImage


gtk_image_new_from_icon_name ()

GtkWidget* gtk_image_new_from_icon_name (const gchar *icon_name, GtkIconSize size);

Создаёт GtkImage отображающий значок из текущемй темы значков. Если имя значка не известно, то отображается значок "broken image" вместо него. Если текущая тема изменяется, значок обновляется соответственно.

icon_name :

Имя значка

size :

Размер заготовки значка

Возвращает :

новый GtkImage отображающий тематический значок

Начиная с версии 2.6


gtk_image_set_from_file ()

void gtk_image_set_from_file (GtkImage *image, const gchar *filename);

Смотрите gtk_image_new_from_file() для деталей.

image :

GtkImage

filename :

Имя файла или NULL


gtk_image_set_from_icon_set ()

void gtk_image_set_from_icon_set (GtkImage *image, GtkIconSet *icon_set, GtkIconSize size);

Смотрите gtk_image_new_from_icon_set() для деталей.

image :

GtkImage

icon_set :

GtkIconSet

size :

Размер заготовки значка


gtk_image_set_from_image ()

void gtk_image_set_from_image (GtkImage *image, GdkImage *gdk_image, GdkBitmap *mask);

Смотрите gtk_image_new_from_image() для деталей.

image :

GtkImage

gdk_image :

GdkImage или NULL

mask :

GdkBitmap или NULL


gtk_image_set_from_pixbuf ()

void gtk_image_set_from_pixbuf (GtkImage *image, GdkPixbuf *pixbuf);

Смотрите gtk_image_new_from_pixbuf() для деталей.

image :

GtkImage

pixbuf :

GdkPixbuf или NULL


gtk_image_set_from_pixmap ()

void gtk_image_set_from_pixmap (GtkImage *image, GdkPixmap *pixmap, GdkBitmap *mask);

Смотрите gtk_image_new_from_pixmap() для деталей.

image :

GtkImage

pixmap :

GdkPixmap или NULL

mask :

GdkBitmap или NULL


gtk_image_set_from_stock ()

void gtk_image_set_from_stock (GtkImage *image, const gchar *stock_id, GtkIconSize size);

Смотрите gtk_image_new_from_stock() для деталей.

image :

GtkImage

stock_id :

Имя заготовленного значка

size :

Размер заготовленного значка


gtk_image_set_from_animation ()

void gtk_image_set_from_animation (GtkImage *image, GdkPixbufAnimation *animation);

Заставляет GtkImage отображать данную анимацию (или ничего не отображает, если вы установили animation в NULL).

image :

GtkImage

animation :

GdkPixbufAnimation


gtk_image_set_from_icon_name ()

void gtk_image_set_from_icon_name (GtkImage *image, const gchar *icon_name, GtkIconSize size);

Смотрите gtk_image_new_from_icon_name() для деталей.

image :

GtkImage

icon_name :

Имя значка

size :

Размер значка

Начиная с версии 2.6


gtk_image_clear ()

void        gtk_image_clear                 (GtkImage *image);

Сбрасывает изображение в пустое значение.

image :

GtkImage

Начиная с версии 2.8


gtk_image_new ()

GtkWidget*  gtk_image_new                   (void);

Создаёт новый пустой виджет GtkImage.

Возвращает :

Вновь созданный виджет GtkImage.


gtk_image_set ()

void gtk_image_set (GtkImage *image, GdkImage *val, GdkBitmap *mask);

Внимание

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

Устанавливает GtkImage.

image :

GtkImage

val :

GdkImage

mask :

GdkBitmap указывающий какая часть изображения должна быть прозрачной.


gtk_image_get ()

void gtk_image_get (GtkImage *image, GdkImage **val, GdkBitmap **mask);

Внимание

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

Получает GtkImage.

image :

GtkImage

val :

Размещение возвращаемого GdkImage

mask :

GdkBitmap указывающий какая часть изображения должна быть прозрачной.


gtk_image_set_pixel_size ()

void gtk_image_set_pixel_size (GtkImage *image, gint pixel_size);

Устанавливает размер в пикселах используемый для именованных значков. Если размер установлен в значение != -1, то вместо него используется размер значка установленный gtk_image_set_from_icon_name().

image :

GtkImage

pixel_size :

Новый размер в пикселах

Начиная с версии 2.6


gtk_image_get_pixel_size ()

gint        gtk_image_get_pixel_size        (GtkImage *image);

Получает размер используемый именованными значками.

image :

GtkImage

Возвращает :

Размер используемый именованными значками.

Начиная с версии 2.6

Детали свойств

Свойство "file"

  "file"                 gchararray            : Read / Write

Имя файла для загрузки и отображения.

Значение по умолчанию: NULL


Свойство "icon-name"

  "icon-name"            gchararray            : Read / Write

Имя значка в теме значков. Если тема значков изменяется, изображение будет обновлено автоматически.

Значение по умолчанию: NULL

Начиная с версии 2.6


Свойство "icon-set"

  "icon-set"             GtkIconSet            : Read / Write

Набор значков для отображения.


Свойство "icon-size"

  "icon-size"            gint                  : Read / Write

Символический размер используемый для заготовленных значков, наборов значков или именованных значков.

Допустимые значения: >= 0

Значение по умолчанию: 4


Свойство "image"

  "image"                GdkImage              : Read / Write

GdkImage для отображения.


Свойство "mask"

  "mask"                 GdkPixmap             : Read / Write

Битовая маска для использования вместе с GdkImage или GdkPixmap.


Свойство "pixbuf"

  "pixbuf"               GdkPixbuf             : Read / Write

GdkPixbuf для отображения.


Свойство "pixbuf-animation"

  "pixbuf-animation"     GdkPixbufAnimation    : Read / Write

GdkPixbufAnimation для отображения.


Свойство "pixel-size"

  "pixel-size"           gint                  : Read / Write

Свойство :pixel-size может использоваться для определения фиксированного размера замещения :icon-size свойства для изображения типа GTK_IMAGE_ICON_NAME.

Допустимые значения: >= -1

Значение по умолчанию: -1

Начиная с версии 2.6


Свойство "pixmap"

  "pixmap"               GdkPixmap             : Read / Write

GdkPixmap для отображения.


Свойство "stock"

  "stock"                gchararray            : Read / Write

Stock ID для отображаемого заготовленного изображения.

Значение по умолчанию: NULL


Свойство "storage-type"

  "storage-type"         GtkImageType          : Read

Используется для представления данных изображения.

Значение по умолчанию: GTK_IMAGE_EMPTY

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

GdkPixbuf