C++ Can';在gtkmm中找不到GDK::InterpType成员

C++ Can';在gtkmm中找不到GDK::InterpType成员,c++,gtk3,gtkmm,gdkpixbuf,C++,Gtk3,Gtkmm,Gdkpixbuf,我试图使Gtk::Image小部件显示文件中的图片,但阻止小部件扩展大小,因此我从Gdk::Pixbuf加载它,然后缩放图片。我使用的是Gdk::Pixbuf而不是GdkPixBuf,因为后者适用于常规指针,但是Gtk::Image需要Glib::RefPtr。(仅提及所有这些,以防有更好的方法来实现我正在做的事情,而我并不知道。) 无论如何,问题是,尽管我遵循了以下步骤,但代码中的第2行生成了错误: error: ‘NEAREST’ is not a member of ‘Gdk::Inter

我试图使
Gtk::Image
小部件显示文件中的图片,但阻止小部件扩展大小,因此我从
Gdk::Pixbuf
加载它,然后缩放图片。我使用的是
Gdk::Pixbuf
而不是
GdkPixBuf
,因为后者适用于常规指针,但是
Gtk::Image
需要
Glib::RefPtr
。(仅提及所有这些,以防有更好的方法来实现我正在做的事情,而我并不知道。)

无论如何,问题是,尽管我遵循了以下步骤,但代码中的第2行生成了错误:

error: ‘NEAREST’ is not a member of ‘Gdk::InterpType’
auto scaled = pixbuf->scale_simple(48, 48, Gdk::InterpType::NEAREST);
                                                            ^~~~~~~
尝试
GDK\u INTERP\u NEAREST
也会导致错误:(

根据稳定的gdkmm文档,成员包括:

INTERP\u最近的

最近邻采样;这是最快和最低的质量 模式。缩小比例时,质量通常是不可接受的,但当 扩大规模

INTERP_TILES

这是对PostScript图像操作符的精确模拟 不启用任何插值

每个像素被渲染为一个微小的纯色平行四边形 其边缘通过抗锯齿实现。它类似于最近的 邻居用于放大,双线性用于缩小

内部双线性

最佳质量/速度平衡;默认情况下使用此模式

双线性插值。对于放大,它相当于 对理想的双线性插值图像进行点采样。为了简化, 这相当于铺设小瓷砖,并在地面上进行整合 覆盖范围

INTERP_HYPER

这是速度最慢、质量最高的重建功能

它源自Wolberg的“数字图像”中的双曲滤波器 “扭曲”,正式定义为双曲滤波器采样 理想双曲滤波器插值图像(滤波器设计) 对于1:1像素映射,是幂等的)

scale\u simple
方法的文档中,您可以找到插值类型的参考:

使src不受影响。如果 您希望获得最大速度(但当按比例缩小时,Gdk::INTERP_最近的是 通常非常难看)。默认的interp_类型应为 Gdk::INTERP_双线性,提供合理的质量和速度


如果有人知道我如何查询g++编译器来告诉我Gdk::InterpType的成员,请告诉我!Gdk_INTERP_TYPE是一个枚举,仅用于测试目的,请尝试使用等效的
int
,比方说0。它编译了吗?@JoséFonte nope,仍然得到一个类型错误
从“int”到“Gdk::InterpType”的无效转换
试一下
Gdk::INTERP_NEAREST
@JoséFonte Holy moly!我想我已经试过了我能想到的所有可能的名字,但是没有——你的建议奏效了!:我可以把它作为一个答案,我会接受的!非常感谢!:)是的,我的问题是我在阅读gtkmm的不稳定文档,而不是稳定的文档(我没有意识到这一点,因为我以为我只是在使用最新的版本,而我没有)。谢谢!@rusins很高兴帮助:)祝你的项目好运!
error: ‘NEAREST’ is not a member of ‘Gdk::InterpType’
auto scaled = pixbuf->scale_simple(48, 48, Gdk::InterpType::NEAREST);
                                                            ^~~~~~~
no known conversion for argument 3 from ‘GdkInterpType’ to ‘Gdk::InterpType’