我如何摆脱 Gtkmm 中的模糊像素?
How do I get rid of blury pixels in Gtkmm?
当我绘制图片并放大时,GTKmm(或者我想是 Cairo)将像素混合在一起以形成漂亮的平滑图像。我真的很讨厌那个。这对调试来说很糟糕。我想看到清晰锐利的像素和清晰的图像。我想看到漂亮的小方块。那么如何关闭炫酷的混合功能呢?
这是我绘制图像的方式。
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);
您需要在模式上设置 NEAREST
过滤器。我不确定 C++ API 为此,但在 C 中我会执行以下操作(在调用 set_source_pixbuf
之后):
cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);
当我绘制图片并放大时,GTKmm(或者我想是 Cairo)将像素混合在一起以形成漂亮的平滑图像。我真的很讨厌那个。这对调试来说很糟糕。我想看到清晰锐利的像素和清晰的图像。我想看到漂亮的小方块。那么如何关闭炫酷的混合功能呢?
这是我绘制图像的方式。
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);
您需要在模式上设置 NEAREST
过滤器。我不确定 C++ API 为此,但在 C 中我会执行以下操作(在调用 set_source_pixbuf
之后):
cairo_pattern_set_filter(cairo_get_source(cr), CAIRO_FILTER_NEAREST);