Отображение изображений в GTK - требуется ли область рисования GTK?
Вопрос
Я пытаюсь отобразить изображение, которое я загружаю из PIXBUF (из данных в памяти), и изображение обновляется каждый раз (поскольку PIXBUF также меняется со временем). Мой вопрос заключается в том, что, поскольку окно будет содержать только изображение (которое периодически обновляется), мне нужен драгоценный камень или область рисования для этого? Или я могу просто отобразить изображение в окне? Другой вариант будет использовать Каир. Может кто-нибудь, пожалуйста, предложить хороший способ сделать это?
Решение
Загрузите файл в PIXBUF, есть конструктор New_From_File или что-то для этого.
Да, создайте чертеза и приклейте его в коробку или что-то где-то.
Далее получите родительское окно DrawingArea (будет такой метод get_window или что-то для этого). Это будет вашим чертежным.
Создайте GC (графический контекст) - вам не нужно устанавливать какие-либо специальные значения в нем.
Подключите Donsertarea к событию выставки. В экстракционном мероприятии вызовите его метод Draw_PixBuf на Drawbable с помощью Pixbuf с созданным GC.
Позвоните в этот же метод draw_pixbuf, когда вы как-то обновляете Pixbuf.
Возможно, вы также захотите рассмотреть возможность использования Pixmap вместо этого, если вы не загружаете его из файла и намерены нарисовать его. Сам Pixmap - это нанесенный, поэтому вы можете прямо нарисовать прямоугольники и вещи на нем. Единственная реальная разница в отображении его на вашей DonitaRea, заключается в том, что вам нужно позвонить в метод draw_drawable вместо draw_pixbuf на drawable.
Обратите внимание, что я пишу это из памяти использования Perl / GTK2, и она может не отображаться чисто на любой язык, который вы используете.
Другие советы
А. GtkImage
Будет работать просто хорошо, и быть проще, чем все, что вы перечислены ;-)