我在 Ted Mielczarek 的网站上找到了这段代码来截取屏幕截图。
/*
* gdk-screenshot.cpp: Save a screenshot of the root window in .png format.
* If a filename is specified as the first argument on the commandline,
* then the image will be saved to that filename. Otherwise, the image will
* be saved as "screenshot.png" in the current working directory.
*
* Compile with:
* g++ -o gdk-screenshot gdk-screenshot.cpp `pkg-config --cflags --libs gdk-x11-2.0`
*/
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
int main(int argc, char** argv)
{
gdk_init(&argc, &argv);
GdkWindow* window = window = gdk_get_default_root_window ();
GdkPixbuf* screenshot = gdk_pixbuf_get_from_drawable (NULL, window, NULL,
0, 0, 0, 0,
gdk_screen_width(),
gdk_screen_height());
GError* error = NULL;
const char* filename = (argc > 1) ? argv[1] : "screenshot.png";
return TRUE == gdk_pixbuf_save (screenshot, filename, "png",
&error, NULL);
}
我按照描述对其进行了编译,它似乎可以正常工作,因为它会生成具有正确尺寸的图像,但屏幕截图完全是黑色的。
这似乎是运行 Wayland 的系统上的一个常见 问题(我正在使用 Wayland 运行 Archlinux),所以我的问题是:
需要对此代码进行哪些修改才能在 Wayland(和 X)上生成正确的屏幕截图?