Отображение изображений в GTK - требуется ли область рисования GTK?

StackOverflow https://stackoverflow.com/questions/3875193

  •  28-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь отобразить изображение, которое я загружаю из 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 Будет работать просто хорошо, и быть проще, чем все, что вы перечислены ;-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top