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’