DirectX 截屏问题
以下三段代码中,只有第一段能截屏,但仍然截不到分层窗口(像QQ的登录窗口),谁能给出一段DirectX的正常截屏代码,效率不要太低!
// ============ 11111 ================
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);
g_pD3DDevice.GetFrontBufferData(0, pSurface);
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pSurface, nil, nil);
// ============= 22222 =============
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);
g_pD3DDevice.GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, pBackSurface);
D3DXLoadSurfaceFromSurface(pSurface, nil, nil, pBackSurface, nil, nil, D3DX_FILTER_NONE, 0);
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pSurface, nil, nil);
// ============== 33333 =============
g_pD3DDevice.GetRenderTarget( 0, pSurface );
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, pBackSurface, nil);
g_pD3DDevice.GetRenderTargetData( pSurface,pBackSurface );
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pBackSurface, nil, nil);
// ============ 11111 ================
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);
g_pD3DDevice.GetFrontBufferData(0, pSurface);
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pSurface, nil, nil);
// ============= 22222 =============
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, pSurface, nil);
g_pD3DDevice.GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, pBackSurface);
D3DXLoadSurfaceFromSurface(pSurface, nil, nil, pBackSurface, nil, nil, D3DX_FILTER_NONE, 0);
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pSurface, nil, nil);
// ============== 33333 =============
g_pD3DDevice.GetRenderTarget( 0, pSurface );
g_pD3DDevice.CreateOffscreenPlainSurface(Screen.Width, Screen.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, pBackSurface, nil);
g_pD3DDevice.GetRenderTargetData( pSurface,pBackSurface );
D3DXSaveSurfaceToFile(PWidechar(filename), D3DXIFF_BMP, pBackSurface, nil, nil);
...全文
相关推荐
visual c++游戏截屏_你是否发现了有的游戏按截屏键无法截屏因为是用DirectX写的硬件加速抓不了屏,必须用DX写个代码在游戏中截屏(附源代码).zip
visual c++游戏截屏_你是否发现了有的游戏按截屏键无法截屏因为是用DirectX写的硬件加速抓不了屏,必须用DX写个代码在游戏中截屏(附源代码).zip
一个使用 DirectX 进行游戏截屏的小程序.zip
一个使用 DirectX 进行游戏截屏的小程序屏幕捕捉一个使用 DirectX 进行游戏截屏的小程序让您通过连接到 DirectX API 函数来捕获屏幕截图。这是一个尚未准备好的原型。
C语言截屏程序
windows sdk实现截屏,程序简单易懂
中三种截屏方式小结
这个为啥呢,只好把截图的函数代码翻出来看,以前是用这种方式的:BitBlt(dcImage, 0, 0, (int)(rect.Width), (int)(rect.Height), dcScreen, (int)(rect.Left), (int)(rect.Top), TernaryRasterOperations.SRCCOPY);凭直觉感觉应该是因为这种通过DC的方式对WPF程序支持有问题,但是又觉得奇怪就是截取其它的WPF组件和窗口都没有问题,偏偏Popup窗口不行。
C#中3种截屏方式及解决思路方法
C#中3种截屏方式及解决思路方法,高清晰自制PDF文件


图形处理/算法
