如何消除Gtkmm中的模糊像素?

时间:2019-05-02 13:30:29

标签: c++ pixel cairo gtkmm

当我绘制图片并放大时,GTKmm(或者我想是开罗)将像素混合在一起,以形成漂亮的平滑图像。我真的很讨厌调试很糟糕。我想看到清晰锐利的像素和清晰的图像。我想看漂亮的小方块。那么如何关闭酷炫的混合功能?

这是我绘制图像的方式。

Gdk::Cairo::set_source_pixbuf(cairoContext, tile->tileImage, tile->x, tile->y);
cairoContext->paint();

还尝试填充以查看是否有任何不同。

Gdk::Cairo::set_source_pixbuf(cairoContext, tile->tileImage, tile->x, tile->y);
cairoContext->rectangle(tile->x, tile->y, tile->tileImage->get_width(), tile->tileImage->get_height());
cairoContext->fill();

不是。

编辑: 这不起作用:

cairoContext->set_antialias(Cairo::Antialias::ANTIALIAS_NONE);

1 个答案:

答案 0 :(得分:3)

您需要在图案上设置NEAREST过滤器。我不确定为此使用C ++ API,但是在C语言中,我将执行以下操作(在调用set_source_pixbuf之后):

cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);