Как отключить линейную интерполяцию / сглаживание / сглаживание при рисовании изображения в Каире? - PullRequest
1 голос
/ 10 октября 2019

Я хочу нарисовать изображение с низким разрешением на другой поверхности в Каире с масштабированием. Например, у меня есть изображение 2x3, которое выглядит следующим образом при увеличении:

enter image description here

Рисование этого изображения на другой поверхности с уровнем масштабирования 10 результатовin:

enter image description here

Код рендеринга точно соответствует этому примеру , т.е. все настройки поверхности / контекста установлены по умолчанию. Видимо, Каир по умолчанию применяет некоторую интерполяцию. Я хочу сохранить блочный / пиксельный вид исходного изображения.

Как я могу контролировать тип интерполяции в Каире? В других библиотеках обычно есть опции для установки interpolation от cubic до linear до nearest. Есть ли эквивалент в Каире?

1 Ответ

1 голос
/ 10 октября 2019

Думаю, вы ищете что-то вроде cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);. Этот вызов будет сделан после cairo_set_source_surface().

...