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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- active-directory – “Send As”权限和“您无权发送给此收
- 将Microsoft动态2013或2015与PHP集成
- Microsoft SQL Compact Edition重命名列
- win10系统安装JDK并配置环境变量
- .net – 可以在Windows XP上运行CoreCLR吗?
- Skype For Business Server 2015 启用离线消息
- windows – 作为SCSI连接的网络驱动器在较大的文件上降低W
- window的渊源、发展过程、趋势
- 无法使用Tesseract 3.0.2.02存档为WIndows编译Tesseract AP
- 在绑定到Image.Source时,Xaml如何创建字符串到BitmapImage值