Método ID2D1RenderTarget::EndDraw (d2d1.h)
Encerra as operações de desenho no destino de renderização e indica o estado de erro atual e as marcas associadas.
Sintaxe
HRESULT EndDraw(
[out, optional] D2D1_TAG *tag1,
[out, optional] D2D1_TAG *tag2
);
Parâmetros
[out, optional] tag1
Tipo: D2D1_TAG*
Quando esse método retorna, contém a marca para operações de desenho que causaram erros ou 0 se não houver erros. Este parâmetro é passado não inicializado.
[out, optional] tag2
Tipo: D2D1_TAG*
Quando esse método retorna, contém a marca para operações de desenho que causaram erros ou 0 se não houver erros. Este parâmetro é passado não inicializado.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retorna um código de erro HRESULT e define tag1 e tag2 para as marcas que estavam ativas quando o erro ocorreu.
Comentários
As operações de desenho só podem ser emitidas entre uma chamada BeginDraw e EndDraw .
BeginDraw e EndDraw são usados para indicar que um destino de renderização está em uso pelo sistema Direct2D. Diferentes implementações de ID2D1RenderTarget podem se comportar de forma diferente quando BeginDraw é chamado. Um ID2D1BitmapRenderTarget pode ser bloqueado entre chamadas BeginDraw/EndDraw , um destino de renderização de superfície DXGI pode ser adquirido no BeginDraw e lançado no EndDraw, enquanto um ID2D1HwndRenderTarget pode começar a ser colocado em lote em BeginDraw e pode estar presente no EndDraw, por exemplo.
O método BeginDraw deve ser chamado antes que as operações de renderização possam ser chamadas, embora as operações de configuração de estado e recuperação de estado possam ser executadas mesmo fora do BeginDraw/EndDraw.
Depois que BeginDraw for chamado, um destino de renderização normalmente criará um lote de comandos de renderização, mas adiará o processamento desses comandos até que um buffer interno esteja cheio, o método Flush seja chamado ou até que EndDraw seja chamado. O método EndDraw faz com que todas as operações de desenho em lote sejam concluídas e retorna um HRESULT indicando o sucesso das operações e, opcionalmente, o estado da marca do destino de renderização no momento em que o erro ocorreu. O método EndDraw sempre é bem-sucedido: ele não deve ser chamado duas vezes, mesmo se um EndDraw anterior resultou em um HRESULT com falha.
Se EndDraw for chamado sem uma chamada correspondente para BeginDraw, ele retornará um erro indicando que BeginDraw deve ser chamado antes de EndDraw.
Chamar BeginDraw duas vezes em um destino de renderização coloca o destino em um estado de erro em que nada mais é desenhado e retorna um HRESULT apropriado e informações de erro quando EndDraw é chamado.
Exemplos
O exemplo a seguir usa um ID2D1HwndRenderTarget para desenhar texto em uma janela.
// 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | d2d1.h |
Biblioteca | D2d1.lib |
DLL | D2d1.dll |