gpt4 book ai didi

winapi - 获取在其中运行 OpenGL 的子窗口的屏幕截图(Windows)

转载 作者:行者123 更新时间:2023-12-05 01:13:37 28 4
gpt4 key购买 nike

我有一个带 child 的主窗口。我需要以编程方式截取屏幕截图以裁剪并将它们绘制回我的主窗口。我这样做的方法是:

HDC hDC = GetWindowDC(hWnd);
HDC memDC = CreateCompatibleDC(hDC);
HBITMAP memBM = CreateCompatibleBitmap(hDC, Width, Height);
HBITMAP OldBM = (HBITMAP)::SelectObject(memDC, memBM );
BitBlt(memDC, 0, 0, Width, 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

关于winapi - 获取在其中运行 OpenGL 的子窗口的屏幕截图(Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143854/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com