在开罗绘制图像时如何禁用线性插值/平滑/抗锯齿?

How to disable linear interpolation / smoothing / anti-aliasing when drawing an image in Cairo?

我想通过放大在开罗的另一个表面上绘制低分辨率图像。例如,我有一个 2x3 的图像,放大后看起来像这样:

将此图像绘制到另一个缩放级别为 10 的表面上会导致:

渲染代码紧跟this example,即所有surface/context设置都是默认的。显然,开罗默认应用一些插值。我想要的是保持原始图像的 blocky/pixelated 外观。

如何控制开罗的插值类型?在其他库中,通常有选项可以将 interpolation 设置为从 cubic 超过 linearnearest。开罗有类似的吗?

我认为您可能正在寻找类似 cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST); 的内容。此调用将在 cairo_set_source_surface().

之后完成