ID2D1RenderTarget::BeginDraw 方法 (d2d1.h)
起始此轉譯目標上的繪圖。
Syntax
void BeginDraw();
傳回值
無
備註
繪圖作業只能在 BeginDraw 和 EndDraw 呼叫之間發出。
BeginDraw 和 EndDraw 可用來指出 Direct2D 系統正在使用轉譯目標。 呼叫 BeginDraw 時,ID2D1RenderTarget 的不同實作可能會有不同的行為。 在 BeginDraw/EndDraw 呼叫之間可能會鎖定 ID2D1BitmapRenderTarget、DXGI 表面轉譯目標可能會在 BeginDraw 上取得,並在 EndDraw 上釋出,而 ID2D1HwndRenderTarget 可能會在 BeginDraw 開始批處理,而且可能會出現在 EndDraw 上,例如。
必須先呼叫 BeginDraw 方法,才能呼叫轉譯作業,不過即使 BeginDraw/EndDraw 之外也可以執行狀態設定和狀態擷取作業。
呼叫 BeginDraw 之後,轉譯目標通常會建置一批轉譯命令,但延遲處理這些命令,直到內部緩衝區已滿、呼叫 Flush 方法,或呼叫 EndDraw 為止。 EndDraw 方法會導致任何批處理的繪圖作業完成,然後傳回 HRESULT,指出作業成功,並選擇性地傳回錯誤發生時轉譯目標的標記狀態。 EndDraw 方法一律會成功:即使先前的 EndDraw 導致 HRESULT 失敗,也不應該呼叫兩次。
如果在未呼叫 BeginDraw 的情況下呼叫 EndDraw,則會傳回錯誤,指出在 EndDraw 之前必須呼叫 BeginDraw。
在轉譯目標上呼叫 BeginDraw 兩次會讓目標進入不進一步繪製的錯誤狀態,並在 呼叫 EndDraw 時傳回適當的 HRESULT 和錯誤資訊。
範例
下列範例使用 ID2D1HwndRenderTarget 將文字繪製到視窗。
// Called whenever the application needs to display the client
// window. This method writes "Hello, World"
//
// Note that this function will automatically discard device-specific
// resources if the Direct3D device disappears during function
// invocation, and will recreate the resources the next time it's
// invoked.
//
HRESULT DemoApp::OnRender()
{
HRESULT hr;
hr = CreateDeviceResources();
if (SUCCEEDED(hr))
{
static const WCHAR sc_helloWorld[] = L"Hello, World!";
// Retrieve the size of the render target.
D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();
m_pRenderTarget->BeginDraw();
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
m_pRenderTarget->DrawText(
sc_helloWorld,
ARRAYSIZE(sc_helloWorld) - 1,
m_pTextFormat,
D2D1::RectF(0, 0, renderTargetSize.width, renderTargetSize.height),
m_pBlackBrush
);
hr = m_pRenderTarget->EndDraw();
if (hr == D2DERR_RECREATE_TARGET)
{
hr = S_OK;
DiscardDeviceResources();
}
}
return hr;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | d2d1.h |
程式庫 | D2d1.lib |
Dll | D2d1.dll |