适用于GTKmm的Zoomable图像查看器

时间:2013-07-08 21:34:23

标签: gtk gtkmm gtk3

我需要一个简单的图像查看器小部件来显示一个Pixbuf,其缩放系数可以使用滚轮更改(仅限整数因子,最近邻插值),放大时应调整滚动位置以使当前中心或鼠标位置将成为原点。单击并拖动鼠标应相应地移动表面;基本上是eogevince做什么。

曾经有一个用于GTK2的外部 gtk-image-viewer 组件,但我还没有找到任何其他内容......

所以我尝试实现自己的,这就是我走了多远:

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()函数的结果?!一些示例初始化Glib::ObjectBase(typeid(ZoomableImage)),这只会增加更多错误。

(我的想法是将我的ZoomableImage放在ScrolledWindow中,它应该为我提供H / V调整,范围从0到图像的实际高度/宽度,在on_draw中,我会读取调整值,应用缩放系数并相应地绘制Pixbuf。这有意义吗?)

0 个答案:

没有答案