小弟正在学习Directx技术,现在想用Directx来截取屏幕中某一区域的图像,希望懂的朋友能给出源码,谢谢啦

解决方案 »

  1.   

    搜一下,多的很,全是DELPHI的
      

  2.   

    你的应用程序是全屏的么?如果是全屏的可以用下面的代码IDirect3DSurface9* pBackBuffer;
    pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pBackBuffer);
    D3DXSaveSurfaceToFile(L"C:\\ScreenShot.bmp",D3DXIFF_BMP,pBackBuffer,NULL,NULL);
    pBackBuffer->Release();
    pBackBuffer = NULL;D3DXSaveSurfaceToFile函数的最后一个参数可以指定一个RECT对象,就是要截图的区域,或为NULL截取整个设备窗口。这个截图过程要在渲染结束之后和缓冲区翻转以前,一般在D3D设备的EndScene函数之后就可以。
    如果是窗口的话也好办,使用GDI全屏截图以后把设备窗口的截图bitblt到GDI的截图上,稍微麻烦点。
      

  3.   

    To bluekitty:
       有没有不用bitblt的方法,直接通过Directx就截取区域屏幕的方法,呵呵
      

  4.   


    你告诉我 【bluekitty】的方法什么地方用到bitblt方法了?IDirect3DSurface9* pBackBuffer;
    pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pBackBuffer);
    D3DXSaveSurfaceToFile(L"C:\\ScreenShot.bmp",D3DXIFF_BMP,pBackBuffer,NULL,NULL);
    pBackBuffer->Release();
    pBackBuffer = NULL;