ID2D1RenderTarget::BeginDraw 方法 (d2d1.h)

起始此轉譯目標上的繪圖。

Syntax

void BeginDraw();

傳回值

備註

繪圖作業只能在 BeginDrawEndDraw 呼叫之間發出。

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

另請參閱

ID2D1RenderTarget