滚动非常大的GtkDrawingArea

Arn*_*ann 5 c c++ gtk gtk2

我有一个GtkDrawingArea用于可视化数据.根据数据库和用户输入,绘图可能会变得非常大(大于允许的最大GtkDrawingArea大小).因此,我想使用与当前窗口一样大的绘图区域,并在滚动时手动更新它.

如果我使用ScrolledWindow + Viewport方法将滚动条添加到绘图区域,它显然不起作用,因为绘图区域不够大,不需要滚动条.

有没有什么方法可以让视口欺骗认为底层小部件比实际大?如果不是什么是解决这个问题的最佳方法?

注意:我使用Gtk2并且不可能切换到Gtk3.

iai*_*ain 2

您需要子类化GtkDrawingArea并覆盖set_scroll_adjustments信号。GtkWidget 文档

在此信号中,您将获得滚动窗口的调整。几年前我写了一些代码,您可以查看它们以了解如何实现它。

MarlinSample查看代码

该代码能够假装该小部件有数百万像素宽,而实际上它并不比窗口大。