отображать изображение в gtk - требуется ли рисовать область gtk? - PullRequest
0 голосов
/ 06 октября 2010

Я пытаюсь отобразить изображение, которое я загружаю из pixbuf (из данных в памяти), и изображение обновляется каждый раз (поскольку pixbuf также меняется со временем). Мой вопрос заключается в том, что, поскольку окно будет содержать только изображение (которое периодически обновляется), нужно ли для этого рисовать gtk или область рисования? или я могу просто отобразить изображение в окне? Другой вариант - использовать Каир. Может кто-нибудь предложить хороший способ сделать это?

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Загрузите файл в pixbuf, есть конструктор new_from_file или что-то для этого.

Да, создайте DrawingArea и вставьте его в Box или что-то еще.

Далее получитеродительское окно DrawingArea (будет метод типа get_window или что-то для этого).Это будет ваш Drawable.

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

Подключите DrawingArea к событию expose.В событии expose он вызывает метод draw_pixbuf на Drawable с вашим pixbuf с созданным вами GC.

Вызывайте этот же метод draw_pixbuf всякий раз, когда вы каким-либо образом обновляете pixbuf. * ​​1011 *

Вы также можетеВы хотите использовать вместо этого растровое изображение, если вы не загружаете его из файла и собираетесь рисовать на нем.Само растровое изображение является Drawable, так что вы можете непосредственно рисовать прямоугольники и другие объекты на нем.Единственная реальная разница в отображении его на DrawingArea заключается в том, что вам нужно вызывать метод draw_drawable вместо draw_pixbuf на Drawable.

Обратите внимание, что я пишу это из памяти использования Perl / Gtk2, и это может не произойтисоставьте карту на любой язык, который вы используете.

0 голосов
/ 06 октября 2010

A GtkImage будет работать просто отлично и будет проще, чем все перечисленные вами; -)

...