GTK+ Reference Manual |
||||
---|---|---|---|---|
GtkImageGtkImage Виджет отображающий изображение |
#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().
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 |
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 : |
|
icon_set : |
Размещение сохраняемого GtkIconSet |
size : |
Размер заготовки значка |
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 : |
|
gdk_image : |
Размещение возвращаемого GtkImage |
mask : |
Размещение возвращаемого GdkBitmap |
GdkPixbuf* gtk_image_get_pixbuf (GtkImage *image);Получает GdkPixbuf отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_PIXBUF (смотрите gtk_image_get_storage_type()). Вызывающий функцию не владеет ссылкой на возвращаемый pixbuf.
image : |
|
Возвращает : |
отображаемый pixbuf, или NULL если изображение пустое |
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 : |
|
pixmap : |
pixmap, или NULL |
mask : |
маска, или NULL |
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 : |
|
stock_id : |
Имя заготовленного значка |
size : |
Размер заготовленного значка |
GdkPixbufAnimation* gtk_image_get_animation (GtkImage *image);Получает GdkPixbufAnimation отображаемый GtkImage. Тип хранения изображения должен быть GTK_IMAGE_EMPTY или GTK_IMAGE_ANIMATION (смотрите gtk_image_get_storage_type()). Вызывающий функцию не владеет ссылкой на возвращаемую анимацию.
image : |
|
Возвращает : |
Отображаемая анимация, или NULL если изображение пустое |
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 : |
|
icon_name : |
Имя значка |
size : |
Размер значка |
Начиная с версии 2.6
GtkImageType gtk_image_get_storage_type (GtkImage *image);Получает тип представления используемый GtkImage для сохранения данных изображения. Если GtkImage не имеет данных изображения, возвращаемое значение будет GTK_IMAGE_EMPTY.
image : |
|
Возвращает : |
Используемое представление изображения |
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 |
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 : |
|
size : |
Размер заготовленного изображения |
Возвращает : |
новый GtkImage |
GtkWidget* gtk_image_new_from_image (GdkImage *image,
GdkBitmap *mask);
Создаёт виджет GtkImage отображающий image с mask. GdkImage клиентская сторона буфера изображения в формате пикселей текущемго экрана. GtkImage не предполагает ссылку для изображения или маски. GtkImage добавит собственную ссылку вместо вашей.
image : |
GdkImage, или NULL |
mask : |
GdkBitmap, или NULL |
Возвращает : |
новый GtkImage |
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 |
GtkWidget* gtk_image_new_from_pixmap (GdkPixmap *pixmap,
GdkBitmap *mask);
Создаёт GtkImage виджет отображающий pixmap с mask. GdkPixmap сторона сервера буфера изображения в формате пикселей текущемго экрана. GtkImage не предполагает ссылки на pixmap или маску. GtkImage добавит собственную ссылку вместо вашей.
pixmap : |
GdkPixmap, или NULL |
mask : |
GdkBitmap, или NULL |
Возвращает : |
новый GtkImage |
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 отображающий заготовленный значок |
GtkWidget* gtk_image_new_from_animation (GdkPixbufAnimation *animation);Создаёт GtkImage отображающий данную анимацию. GtkImage не предполагает ссылку на анимацию. GtkImage добавляет собственную ссылку вместо вашей.
animation : |
анимация |
Возвращает : |
Новый виджет GtkImage |
GtkWidget* gtk_image_new_from_icon_name (const gchar *icon_name,
GtkIconSize size);
Создаёт GtkImage отображающий значок из текущемй темы значков. Если имя значка не известно, то отображается значок "broken image" вместо него. Если текущая тема изменяется, значок обновляется соответственно.
icon_name : |
Имя значка |
size : |
Размер заготовки значка |
Возвращает : |
новый GtkImage отображающий тематический значок |
Начиная с версии 2.6
void gtk_image_set_from_file (GtkImage *image,
const gchar *filename);
Смотрите gtk_image_new_from_file() для деталей.
image : |
|
filename : |
Имя файла или NULL |
void gtk_image_set_from_icon_set (GtkImage *image,
GtkIconSet *icon_set,
GtkIconSize size);
Смотрите gtk_image_new_from_icon_set() для деталей.
image : |
|
icon_set : |
|
size : |
Размер заготовки значка |
void gtk_image_set_from_image (GtkImage *image,
GdkImage *gdk_image,
GdkBitmap *mask);
Смотрите gtk_image_new_from_image() для деталей.
image : |
|
gdk_image : |
GdkImage или NULL |
mask : |
GdkBitmap или NULL |
void gtk_image_set_from_pixbuf (GtkImage *image,
GdkPixbuf *pixbuf);
Смотрите gtk_image_new_from_pixbuf() для деталей.
image : |
|
pixbuf : |
GdkPixbuf или NULL |
void gtk_image_set_from_pixmap (GtkImage *image,
GdkPixmap *pixmap,
GdkBitmap *mask);
Смотрите gtk_image_new_from_pixmap() для деталей.
image : |
|
pixmap : |
GdkPixmap или NULL |
mask : |
GdkBitmap или NULL |
void gtk_image_set_from_stock (GtkImage *image,
const gchar *stock_id,
GtkIconSize size);
Смотрите gtk_image_new_from_stock() для деталей.
image : |
|
stock_id : |
Имя заготовленного значка |
size : |
Размер заготовленного значка |
void gtk_image_set_from_animation (GtkImage *image,
GdkPixbufAnimation *animation);
Заставляет GtkImage отображать данную анимацию (или ничего не отображает, если вы установили animation в NULL).
image : |
|
animation : |
void gtk_image_set_from_icon_name (GtkImage *image,
const gchar *icon_name,
GtkIconSize size);
Смотрите gtk_image_new_from_icon_name() для деталей.
image : |
|
icon_name : |
Имя значка |
size : |
Размер значка |
Начиная с версии 2.6
void gtk_image_clear (GtkImage *image);Сбрасывает изображение в пустое значение.
image : |
Начиная с версии 2.8
GtkWidget* gtk_image_new (void);Создаёт новый пустой виджет GtkImage.
Возвращает : |
Вновь созданный виджет GtkImage. |
void gtk_image_set (GtkImage *image,
GdkImage *val,
GdkBitmap *mask);
gtk_image_set устарела и не должна использоваться во вновь создаваемом коде.
Устанавливает GtkImage.
image : |
|
val : |
|
mask : |
GdkBitmap указывающий какая часть изображения должна быть прозрачной. |
void gtk_image_get (GtkImage *image,
GdkImage **val,
GdkBitmap **mask);
gtk_image_get устарела и не должна использоваться во вновь создаваемом коде.
Получает GtkImage.
image : |
|
val : |
Размещение возвращаемого GdkImage |
mask : |
GdkBitmap указывающий какая часть изображения должна быть прозрачной. |
void gtk_image_set_pixel_size (GtkImage *image,
gint pixel_size);
Устанавливает размер в пикселах используемый для именованных значков. Если размер установлен в значение != -1, то вместо него используется размер значка установленный gtk_image_set_from_icon_name().
image : |
|
pixel_size : |
Новый размер в пикселах |
Начиная с версии 2.6
gint gtk_image_get_pixel_size (GtkImage *image);Получает размер используемый именованными значками.
image : |
|
Возвращает : |
Размер используемый именованными значками. |
Начиная с версии 2.6
"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 / WriteGdkImage для отображения.
Свойство "mask"
"mask" GdkPixmap : Read / WriteБитовая маска для использования вместе с GdkImage или GdkPixmap.
Свойство "pixbuf"
"pixbuf" GdkPixbuf : Read / WriteGdkPixbuf для отображения.
Свойство "pixbuf-animation"
"pixbuf-animation" GdkPixbufAnimation : Read / WriteGdkPixbufAnimation для отображения.
Свойство "pixel-size"
"pixel-size" gint : Read / WriteСвойство :pixel-size может использоваться для определения фиксированного размера замещения :icon-size свойства для изображения типа GTK_IMAGE_ICON_NAME.
Допустимые значения: >= -1
Значение по умолчанию: -1
Начиная с версии 2.6
Свойство "pixmap"
"pixmap" GdkPixmap : Read / WriteGdkPixmap для отображения.
Свойство "stock"
"stock" gchararray : Read / WriteStock ID для отображаемого заготовленного изображения.
Значение по умолчанию: NULL
Свойство "storage-type"
"storage-type" GtkImageType : ReadИспользуется для представления данных изображения.
Значение по умолчанию: GTK_IMAGE_EMPTY
Смотрите также