Не могу найти членов GDK :: InterpType в gtkmm

Я пытаюсь сделать Gtk::Image виджет отображает изображение из файла, но препятствует увеличению размера виджета, поэтому я загружаю его из Gdk::Pixbuf а затем масштабирование изображения. я использую Gdk::Pixbuf вместо GdkPixBuf потому что последний работает на обычных указателях, но Gtk::Image требует Glib::RefPtr<Gdk::Pixbuf>, (Просто упомяну все это на случай, если есть лучший способ добиться того, что я делаю, о чем я не знаю.)

auto pixbuf = Gdk::Pixbuf::create_from_file("/home/raitis/Music/WRLD/Awake EP/cover.jpg");
auto scaled = pixbuf->scale_simple(48, 48, Gdk::InterpType::NEAREST);
image->set(scaled);

Во всяком случае, проблема в том, что, хотя я следую за документация для Gdk::Pixbuf, строка 2 в моем коде генерирует ошибку:

error: ‘NEAREST’ is not a member of ‘Gdk::InterpType’
auto scaled = pixbuf->scale_simple(48, 48, Gdk::InterpType::NEAREST);
^~~~~~~

Попытка GDK_INTERP_NEAREST вместо этого также приводит к ошибке. 🙁

no known conversion for argument 3 from ‘GdkInterpType’ to ‘Gdk::InterpType’

1

Решение

Из конюшни gtkmm gdkmm документация, Gdk :: InterpType участники:

INTERP_NEAREST

Выборка ближайшего соседа; это самое быстрое и самое низкое качество
Режим. Качество обычно неприемлемо при уменьшении, но может быть нормальным, когда
увеличение.

INTERP_TILES

Это точное моделирование оператора изображения PostScript.
без какой-либо интерполяции включен.

Каждый пиксель отображается в виде крошечного параллелограмма сплошного цвета,
Края которых реализованы сглаживанием. Это похоже на ближайший
сосед для расширения и билинейный для сокращения.

INTERP_BILINEAR

Лучшее соотношение качества и скорости; используйте этот режим по умолчанию.

Билинейная интерполяция. Для расширения это эквивалентно
точечная выборка идеального билинейно-интерполированного изображения. Для сокращения,
это эквивалентно укладке небольших плиток и интеграции по
зона покрытия.

INTERP_HYPER

Это самая медленная и качественная функция восстановления.

Это получено из гиперболических фильтров в «Цифровом изображении Вольберга»
Деформация «, и формально определяется как выборка гиперболического фильтра
идеальный гиперболический фильтр с интерполированным изображением (фильтр предназначен
быть идемпотентным для картирования пикселей 1: 1).

И из документации Gdk :: Pixbuf, в scale_simple В методе вы найдете ссылку на тип интерполяции:

Оставляет Src без изменений. interp_type должен быть Gdk :: INTERP_NEAREST если
Вы хотите максимальную скорость (но при уменьшении Gdk :: INTERP_NEAREST является
обычно неприглядно некрасиво). Тип по умолчанию interp_type должен быть
Gdk :: INTERP_BILINEAR который предлагает разумное качество и скорость.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]