首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GTKMM:给DrawingArea截屏?

GTKMM:给DrawingArea截屏?
EN

Stack Overflow用户
提问于 2018-09-11 05:32:37
回答 1查看 162关注 0票数 1

我有一个绘图区域,我在里面画了一些图形或图像,所以我有这个回调来截图:

代码语言:javascript
复制
void CanvasToolBox::actionCanvasCamera()
{
    auto root = Gdk::Window::get_default_root_window();
    int height = root->get_height();
    int width = root->get_width();
    auto pixels = Gdk::Pixbuf::create(root, 0, 0, width, height);
    pixels->save("s.png", "png");
}

这段代码会截取整个屏幕的截图。但是我需要截取一个特定窗口的屏幕截图,在我的例子中是Gtk::DrawingArea。因此,函数create需要一个Gdk::Window作为参数。有没有办法截取Gtk特定窗口的屏幕截图?谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 16:32:54

我不习惯使用GTKmm (我改用C和Python ),但是在您的示例中,这看起来非常简单。你只想使用你的Gtk::DrawingArea而不是根窗口。因此,您在Gdk::Window::get_default_root_window的文档中进行搜索,发现它返回一个Gdk::Window

现在,您必须找到如何从Gtk::DrawingArea中获取Gdk::Window。因此,您可以转到Gtk::DrawingArea的文档,搜索返回Gdk::Window的函数,然后找到Gtk::Widget::get_window,它继承自Gtk::Widget。顺便说一句,你可能更喜欢const版本,因为你不需要修改窗口,只需要阅读它。

然后,您可以将获取根窗口的代码替换为一个调用,以获取您所关心的小部件的Gdk::Window,这样就完成了。如果您想走得更远,可以使用cairo上下文而不是使用Gdk::Pixbuf

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

https://stackoverflow.com/questions/52265773

复制
相关文章

相似问题

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