Partager via


ID2D1RenderTarget ::BeginDraw, méthode (d2d1.h)

Lance le dessin sur cette cible de rendu.

Syntaxe

void BeginDraw();

Valeur de retour

None

Remarques

Les opérations de dessin ne peuvent être émises qu’entre un appel BeginDraw et EndDraw .

BeginDraw et EndDraw sont utilisés pour indiquer qu’une cible de rendu est en cours d’utilisation par le système Direct2D. Différentes implémentations d’ID2D1RenderTarget peuvent se comporter différemment lorsque BeginDraw est appelé. Un id2D1BitmapRenderTarget peut être verrouillé entre les appels BeginDraw/EndDraw , une cible de rendu de surface DXGI peut être acquise sur BeginDraw et publiée sur EndDraw, tandis qu’un ID2D1HwndRenderTarget peut commencer à traiter par lots à BeginDraw et peut se présenter sur EndDraw, par exemple.

La méthode BeginDraw doit être appelée avant que les opérations de rendu puissent être appelées, bien que les opérations de définition d’état et de récupération d’état puissent être effectuées même en dehors de BeginDraw/EndDraw.

Après l’appel de BeginDraw , une cible de rendu génère normalement un lot de commandes de rendu, mais reporte le traitement de ces commandes jusqu’à ce qu’une mémoire tampon interne soit complète, que la méthode Flush soit appelée ou jusqu’à l’appel de EndDraw . La méthode EndDraw entraîne la fin de toutes les opérations de dessin par lots, puis retourne un HRESULT indiquant la réussite des opérations et, éventuellement, l’état de balise de la cible de rendu au moment où l’erreur s’est produite. La méthode EndDraw réussit toujours : elle ne doit pas être appelée deux fois, même si un EndDraw précédent a abouti à un HRESULT défaillant.

Si EndDraw est appelé sans appel correspondant à BeginDraw, il retourne une erreur indiquant que BeginDraw doit être appelé avant EndDraw.

L’appel de BeginDraw deux fois sur une cible de rendu place la cible dans un état d’erreur où rien de plus n’est dessiné, et retourne un HRESULT et des informations d’erreur appropriés lorsque EndDraw est appelé.

Exemples

L’exemple suivant utilise un ID2D1HwndRenderTarget pour dessiner du texte dans une fenêtre.

//  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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Mise à jour de plateforme pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d2d1.h
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

ID2D1RenderTarget