- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在寻找一种将一些 gtk 小部件容器渲染到 pixbuf 以便以后使用 gtkmm3 在拖放图标图像中使用的方法。
据我研究, native gtk3 中执行此操作的正确方法是 - 在提供的 cairo 表面上使用 gtk_widget_draw()。
这个表面的创建不是问题,但是调用 gtk_widget_draw() 本身是问题。
唯一在 gtkmm-3.4.2 源代码中直接提到的地方是 Gtk::Widget::draw() 函数 (widget.cc:310),它被声明为“ protected ”。
所以我的问题是:我如何在 gtkmm3 中正确执行此类任务(将小部件渲染到 pixbuf)?
此时我看到两个选项:
子类 Gtk::Widget 为 protected draw() 函数提供公共(public)接口(interface)
从 Gtk::Widget 中提取 gobj* 实例并在该实例上调用 native Gtk 的 gtk_widget_draw()。
问题是:哪种方式更可取,为什么?或者也许还有其他一些[更好的]方法可以做到这一点?
最佳答案
您可以使用GtkOffscreenWindow
从docs 中收集您的小部件的pixbuf。 :
The idea is to take a widget and manually set the state of it, add it to an OffscreenWindow and then retrieve the snapshot as a 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 中)和额外的提示:
关于c++ - gtk_widget_draw() 替代 gtkmm3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903736/
我正在寻找一种将一些 gtk 小部件容器渲染到 pixbuf 以便以后使用 gtkmm3 在拖放图标图像中使用的方法。 据我研究, native gtk3 中执行此操作的正确方法是 - 在提供的 ca
我是一名优秀的程序员,十分优秀!