我有一个绘图区域,我在里面绘制一些数字或图像,所以我有这个回调截取屏幕截图:
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特定窗口的截图?谢谢
我不习惯GTKmm(我使用的是C和Python API),但是在你的例子中,这看起来非常简单。您只想使用Gtk::DrawingArea
而不是根窗口。所以你搜索Gdk::Window::get_default_root_window
的文档,发现它返回一个Gdk::Window
。
现在你必须找到如何从Gdk::Window
获得Gtk::DrawingArea
。所以你去Gtk::DrawingArea
的文档并搜索一个返回Gdk::Window
的函数,然后发现这是Gtk::Widget::get_window
,它继承自Gtk::Widget
。顺便说一句,您可能更喜欢const版本,因为您不修改窗口,只需阅读它。
然后,您可以通过调用替换获取根窗口的代码,以获取您关注的小部件的Gdk::Window
,并且您已完成。如果你想进一步,而不是使用Gdk::Pixbuf
,可能有一种方法来使用cairo上下文。