x11 xGetImage 错误匹配错误

x11 xGetImage BadMatch Error

我正在尝试制作一个简单的程序来转储当前屏幕并将其转换为 png 图像。但是,我目前收到错误 "X Error of failed request: BadMatch (invalid parameter attributes)",这似乎是由 XGetImage 引起的。查看文档,这似乎是由以下两者之一引起的:

BadMatch - InputOnly window 用作 Drawable。

BadMatch - 某些参数或参数对具有正确的类型和范围,但无法以请求所需的其他方式匹配。

我想这与第一个有关,但我不确定。如果确实如此,我将如何获得屏幕转储?

这是给出错误的代码片段:

Display *d = XOpenDisplay(NULL);

Window root = DefaultRootWindow(d);

int windowHeight = XDisplayHeight (d, 0);
int windowWidth = XDisplayWidth(d, 0);


// Get dump of screen
XImage *image = XGetImage(d, root, 0, 0, windowHeight, windowWidth, AllPlanes, ZPixmap);

你的 "width" 和 "height" 参数顺序错误,交换它们。