首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtk_widget_draw()替代gtkmm3

gtk_widget_draw()替代gtkmm3
EN

Stack Overflow用户
提问于 2012-10-15 20:47:57
回答 1查看 504关注 0票数 3

我正在寻找一种将一些gtk小部件容器呈现为像素的方法,以便以后使用gtkmm3在拖放图标图像中使用。

在本机gtk3中,正确的方法是-在提供的cairo面上使用gtk_widget_draw()。

这个曲面的创建不是一个问题,但是对gtk_widget_draw()本身的调用本身是一个问题。

只有在gtkmm-3.4.2源代码中直接提到的地方是Gtk::Widget::draw()函数(widget.cc:310),它被声明为“受保护的”。

因此,我的问题是:如何在gtkmm3中正确地执行这样的任务(将小部件呈现为像素)?

在这一点上,我看到两个选择:

  • 子类Gtk::小部件,以提供用于受保护的Gtk()函数的公共接口
  • 从Gtk::小部件中提取gobj*实例,并在该实例上调用本地Gtk的gtk_widget_draw()。

问题是:哪一种方式更可取,为什么?或者还有其他更好的方法来做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 21:31:25

您可以使用GtkOffscreenWindow文档中收集小部件的像素:

其思想是获取一个小部件并手动设置它的状态,将其添加到一个OffscreenWindow中,然后以Gdk::Pixbuf的形式检索快照。

职能如下:

代码语言:javascript
复制
Glib::RefPtr<Gdk::Pixbuf> Gtk::OffscreenWindow::get_pixbuf  (       )   
Retrieves a snapshot of the contained widget in the form of a Gdk::Pixbuf.

您还可以从以下相关问题中收集一些示例代码(在python中)和额外的提示:

如何在开罗表面上绘制任何GTK小部件

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12903736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档