請問如何用 Direct X 來擷取螢幕的畫面 |
尚未結案
|
wu-eric
中階會員 發表:14 回覆:82 積分:64 註冊:2004-03-17 發送簡訊給我 |
|
wu-eric
中階會員 發表:14 回覆:82 積分:64 註冊:2004-03-17 發送簡訊給我 |
這個問題已找到解決方法,如以下範例
但因我想抓下來的畫面傳至遠方電腦
是否可抓下來後轉成TMemoryStream HWND hWnd; IDirect3D9 *g_D3D; IDirect3DDevice9 *g_pD3DDevice; IDirect3DSurface9 *surf; IDirect3DVertexBuffer9 *pD3DBuf; D3DPRESENT_PARAMETERS d3dpp; D3DDISPLAYMODE *pMode; LPDIRECT3DSURFACE9 pd3dsFront = NULL; TRect rect; short ret; if((g_D3D=Direct3DCreate9(D3D_SDK_VERSION)) == NULL) Edit1->Text = "Direct Create Error....!"; else Edit1->Text = "Direct Create OK....!"; g_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,pMode); ZeroMemory(&d3dpp,sizeof(D3DPRESENT_PARAMETERS)); d3dpp.Windowed = true; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = pMode->Format; hWnd=GetDesktopWindow(); hWnd = Form1->Handle; if(g_D3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pD3DDevice)) Edit2->Text = "Create Device Error....!"; else Edit2->Text = "Create Device OK....!"; g_pD3DDevice->GetDisplayMode(0,pMode); g_pD3DDevice->CreateOffscreenPlainSurface(pMode->Width, pMode->Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &pd3dsFront, NULL); if( SUCCEEDED( g_pD3DDevice->GetFrontBufferData(0,pd3dsFront) ) ) ret = D3DXSaveSurfaceToFile("test.bmp", D3DXIFF_BMP, pd3dsFront, NULL, NULL); Edit3->Text = ret;發表人 - taishyang 於 2004/03/30 23:07:55 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |