加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

winapi – 获取运行OpenGL的子窗口的截图(Windows)

发布时间:2020-12-13 20:29:26 所属栏目:Windows 来源:网络整理
导读:我有一个带孩子的主窗户.我需要以编程方式截取屏幕截图以在我的主窗口上裁剪并绘制它们.我这样做的方式是: HDC hDC = GetWindowDC(hWnd);HDC memDC = CreateCompatibleDC(hDC);HBITMAP memBM = CreateCompatibleBitmap(hDC,Width,Height);HBITMAP OldBM = (
我有一个带孩子的主窗户.我需要以编程方式截取屏幕截图以在我的主窗口上裁剪并绘制它们.我这样做的方式是:
HDC hDC = GetWindowDC(hWnd);
HDC memDC = CreateCompatibleDC(hDC);
HBITMAP memBM = CreateCompatibleBitmap(hDC,Width,Height);
HBITMAP OldBM = (HBITMAP)::SelectObject(memDC,memBM );
BitBlt(memDC,Height,hDC,BEGINX,BEGINY,SRCCOPY);
int Bpp = GetDeviceCaps(hDC,BITSPIXEL);
int size = Bpp/8 * ( Width * Height );
BYTE *lpBits = new BYTE[size];
GetBitmapBits(memBM,size,lpBits);

但这并没有捕获子窗口的OpenGL部分,而只是在OGL渲染应该是的区域中绘制空白.

我记得几年前当我试图屏幕抓取一个视频并且只是获得视频的黑色区域时,我遇到了类似的问题.通过减少视频驱动程序上的硬件加速设置(在XP上:右键单击桌面>属性>设置>高级>疑难解答)来解决它.

对于基于代码的解决方案,您可能需要参考以下的帖子:

Blank Screenshots In Vista and Win7 when gaming

Saving a screenshot of a window using C#,WPF,and DWM

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读