linux c 截图,如何在Linux上用C ++获取模糊窗口的截图

博主正在尝试拍摄屏幕上未聚焦、可能被其他窗口部分或完全遮挡的窗口的截图。通过使用X11的XComposite和XRender功能,尝试实现这一目标。然而,代码似乎并未按预期工作,问题可能是由于X11没有正确地绘制模糊窗口。博客中展示了尝试的代码片段,并附带了一个完全可见窗口的截图作为示例。
摘要由CSDN通过智能技术生成

我试图弄清楚如何拍摄当前没有聚焦的窗口的屏幕截图,因此窗口很可能被其他窗口部分或完全遮挡。

XID xid = windowID; // Checked and confirmed that the window ID is correct

XGetWindowAttributes( display, windowID, &attrributes );

XCompositeRedirectWindow (display, xid, CompositeRedirectAutomatic);

Pixmap pixmap = XCompositeNameWindowPixmap (display, xid);

// Extract the data

XRenderPictFormat *format = XRenderFindVisualFormat (display, attrributes.visual);

XRenderPictureAttributes pa;

pa.subwindow_mode = IncludeInferiors;

Picture picture = XRenderCreatePicture (display, xid, format, CPSubwindowMode, &pa);

QPixmap finalPix (attrributes.width, attrributes.height);

XRenderComposite (display, PictOpSrc, picture, None, finalPix.x11PictureHandle(), 0,0, 0,0, 0,0, attrributes.width, attrributes.height);

XFreePixmap (display, pixmap);

XCompositeUnredirectWindow (display, xid, CompositeRedirectAutomatic);

return finalPix;

(编辑: 此屏幕截图是从一个完全可见的窗口拍摄的,而不是一个模糊的窗口,所以我猜目前问题甚至不是X11没有画出来但是我的实施似乎不起作用,我无法弄清楚原因。 )

这就是我的konsole窗口的截图:

317ee640570161944786a7d8153f2e74.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值