IDXGISurface1::GetDC 方法 (dxgi.h)
傳回 DC) (裝置內容,可讓您使用 Windows 圖形裝置介面 (GDI) 轉譯至 Microsoft DirectX Graphics Infrastructure (DXGI) 介面。
語法
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
參數
Discard
類型: BOOL
布爾值,指定是否要在 GDI DC 中保留 Direct3D 內容。 TRUE 會指示運行時間不要保留 GDI DC 中的 Direct3D 內容;也就是說,運行時間會捨棄 Direct3D 內容。 FALSE 保證 Direct3D 內容可在 GDI DC 中使用。
[out] phdc
類型: HDC*
HDC 句柄的指標,表示 GDI 轉譯的目前裝置內容。
傳回值
類型: HRESULT
如果成功,則傳回S_OK;否則為錯誤碼。
備註
DXGI 1.0 不支援此方法,其隨附於 Windows Vista 和 Windows Server 2008。 需要 DXGI 1.1 支援,此支援適用於 Windows 7、Windows Server 2008 R2,以及以 Service Pack 2 (SP2) (KB) (KB 971644) 和 Windows Server 2008 (KB 971512) 更新。
使用 GetDC 方法來擷取 DC 之後,您可以使用 GDI 轉譯至 DXGI 介面。
GetDC 方法會讀取 GDI 轉譯的介面,並允許在 DXGI 與 GDI 技術之間進行操作。
使用此方法時請記住下列事項:
- 您必須使用介面 的 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 旗標,或使用交換鏈結 的 DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE 旗標來建立介面,否則此方法會失敗。
- 您必須先釋放裝置,然後呼叫 IDXGISurface1::ReleaseDC 方法,再發出任何新的 Direct3D 命令。
- 如果這個方法已經建立未完成的DC,這個方法就會失敗。
- 介面或交換鏈結的格式必須 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB 或 DXGI_FORMAT_B8G8R8A8_UNORM。
- 在 GetDC 上,Direct3D 管線輸出合併中的轉譯目標與介面無關。 在 GDI 轉譯之後,您必須在裝置上呼叫 ID3D11DeviceContext::OMSetRenderTargets 方法。
- 在調整緩衝區大小之前,您必須釋放所有未處理的DC。
IDXGISwapChain* g_pSwapChain = NULL;
IDXGISurface1* g_pSurface1 = NULL;
...
//Setup the device and the swapchain
g_pSwapChain->GetBuffer(0, __uuidof(IDXGISurface1), (void**) &g_pSurface1);
g_pSurface1->GetDC( FALSE, &g_hDC );
...
//Draw on the DC using GDI
...
//When finish drawing release the DC
g_pSurface1->ReleaseDC( NULL );
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | dxgi.h |
程式庫 | DXGI.lib |