我需要一个简单的图像查看器小部件来显示 Pixbuf,缩放因子可以使用滚轮更改(仅整数因子,最近邻插值),放大应该调整滚动位置,以便当前中心或鼠标位置将成为原点。单击并拖动鼠标应相应地移动表面;基本上做什么eog
或evince
做什么。
曾经有一个 GTK2 的外部gtk-image-viewer组件,但我没有找到其他任何东西......</p>
所以我尝试实现自己的,这就是我走了多远:
struct ZoomableImage : public Gtk::Scrollable, public Gtk::DrawingArea {
ZoomableImage() {
auto h = get_hadjustment();
}
};
导致警告
gtk_scrollable_get_hadjustment: assertion `GTK_IS_SCROLLABLE (scrollable)' failed
我找不到任何关于如何在 GTKmm 中继承接口的适当文档,标题隐藏了 doxygen 的构造函数,它应该被基类init()
函数的结果调用?!一些示例 initialize Glib::ObjectBase(typeid(ZoomableImage))
,这只会增加更多错误。
(我的想法是将我的 ZoomableImage 放在一个 ScrolledWindow 中,它应该为我提供 H/V 调整,这些范围从 0 到图像的实际高度/宽度,on_draw
我会读取调整的值,应用缩放因子并绘制相应的 Pixbuf。这有意义吗?)