Я пытаюсь отобразить изображение, которое загружаю из pixbuf (из данных в память), и изображение обновляется каждый раз (так как pixbuf также изменяется со временем). Мой вопрос заключается в том, что, поскольку окно будет содержать только изображение (которое периодически обновляется), для этого мне нужен gtk drawable или область рисования? или я могу просто отобразить изображение в окне? Другой вариант - использовать каир. Может ли кто-нибудь предложить хороший способ сделать это?отображать изображение в gtk - требуется ли рисовать область gtk?
ответ
Загрузите файл в pixbuf, есть new_from_file конструктор или что-то для этого.
Да, создайте DrawingArea и вставьте его в коробку или что-то еще.
Далее, получите родительское окно DrawingArea (будет такой метод, как get_window или что-то для этого). Это будет ваш Drawable.
Создайте GC (графический контекст) - вам не нужно устанавливать в нем какие-либо специальные значения.
Подключите DrawingArea к событию экспонирования. В событии экспонирования вызовите метод draw_pixbuf на Drawable с вашим pixbuf с созданным GC.
Назовите этот метод draw_pixbuf всякий раз, когда вы как-то обновляете pixbuf.
Возможно, вам также понадобится использовать pixmap, если вы не загружаете его из файла и не намерены рисовать на нем. Сама pixmap является Drawable, поэтому вы можете прямо нарисовать на ней прямоугольники и вещи. Единственная реальная разница в отображении его в DrawingArea заключается в том, что вам нужно вызвать метод draw_drawable вместо draw_pixbuf в Drawable.
Обратите внимание, что я пишу это из памяти с использованием Perl/Gtk2, и он может не отображаться на любом языке, который вы используете.
А GtkImage
будет работать нормально, и быть проще, чем все, что вы в списке ;-)
thanx ... но я попытался сделать это с помощью GtkImage ... но я не могу отображать изображение каждый раз ... Я использую событие expose и gtk_widget_queue_draw (окно), чтобы отображать обновленное изображение каждый раз .. . но все, что я получаю, это пустое окно ... есть ли что-нибудь еще, что мне нужно сделать, чтобы отображать измененное изображение каждый раз? i'l отправьте код, если потребуется .... – linuxnewbie
thnx для ур ответ ... я буду использовать C lang ... но я попробую ур подход..иах функции вызовы будут разными ... i «Я заглядываю в него ... thnx в любом случае ... – linuxnewbie