我正在寻找一种将一些gtk小部件容器呈现为像素的方法,以便以后使用gtkmm3在拖放图标图像中使用。
在本机gtk3中,正确的方法是-在提供的cairo面上使用gtk_widget_draw()。
这个曲面的创建不是一个问题,但是对gtk_widget_draw()本身的调用本身是一个问题。
只有在gtkmm-3.4.2源代码中直接提到的地方是Gtk::Widget::draw()函数(widget.cc:310),它被声明为“受保护的”。
因此,我的问题是:如何在gtkmm3中正确地执行这样的任务(将小部件呈现为像素)?
在这一点上,我看到两个选择:
问题是:哪一种方式更可取,为什么?或者还有其他更好的方法来做呢?
发布于 2012-10-15 21:31:25
您可以使用GtkOffscreenWindow从文档中收集小部件的像素:
其思想是获取一个小部件并手动设置它的状态,将其添加到一个OffscreenWindow中,然后以Gdk::Pixbuf的形式检索快照。
职能如下:
Glib::RefPtr<Gdk::Pixbuf> Gtk::OffscreenWindow::get_pixbuf ( )
Retrieves a snapshot of the contained widget in the form of a Gdk::Pixbuf.您还可以从以下相关问题中收集一些示例代码(在python中)和额外的提示:
https://stackoverflow.com/questions/12903736
复制相似问题