Metodo ID2D1RenderTarget::EndDraw (d2d1.h)
Termina le operazioni di disegno sulla destinazione di rendering e indica lo stato di errore corrente e i tag associati.
Sintassi
HRESULT EndDraw(
[out, optional] D2D1_TAG *tag1,
[out, optional] D2D1_TAG *tag2
);
Parametri
[out, optional] tag1
Tipo: D2D1_TAG*
Quando questo metodo restituisce, contiene il tag per le operazioni di disegno che hanno causato errori o 0 se non sono presenti errori. Questo parametro viene passato non inizializzato.
[out, optional] tag2
Tipo: D2D1_TAG*
Quando questo metodo restituisce, contiene il tag per le operazioni di disegno che hanno causato errori o 0 se non sono presenti errori. Questo parametro viene passato non inizializzato.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT e imposta tag1 e tag2 sui tag attivi quando si è verificato l'errore.
Commenti
Le operazioni di disegno possono essere rilasciate solo tra una chiamata BeginDraw e EndDraw .
BeginDraw e EndDraw vengono usati per indicare che una destinazione di rendering è in uso dal sistema Direct2D. Le diverse implementazioni di ID2D1RenderTarget potrebbero comportarsi in modo diverso quando BeginDraw viene chiamato. Un ID2D1BitmapRenderTarget può essere bloccato tra/ le chiamate BeginDrawEndDraw, una destinazione di rendering della superficie DXGI potrebbe essere acquisita in BeginDraw e rilasciata in EndDraw, mentre un ID2D1HwndRenderTarget può iniziare a eseguire il batch in BeginDraw e può essere presente in EndDraw, ad esempio.
Il metodo BeginDraw deve essere chiamato prima che sia possibile chiamare le operazioni di rendering, anche se è possibile eseguire operazioni di recupero dello stato e di recupero dello stato anche all'esterno di BeginDraw EndDraw/.
Dopo aver chiamato BeginDraw , una destinazione di rendering genererà un batch di comandi di rendering, ma rinvia l'elaborazione di questi comandi fino a quando un buffer interno non è completo, il metodo Flush viene chiamato o fino a quando EndDraw viene chiamato. Il metodo EndDraw causa il completamento di tutte le operazioni di disegno in batch e quindi restituisce un HRESULT che indica l'esito positivo delle operazioni e, facoltativamente, lo stato tag della destinazione di rendering al momento dell'errore. Il metodo EndDraw ha sempre esito positivo: non deve essere chiamato due volte anche se un endDraw precedente ha generato un errore HRESULT.
Se EndDraw viene chiamato senza una chiamata corrispondente a BeginDraw, restituisce un errore che indica che BeginDraw deve essere chiamato prima di EndDraw.
La chiamata a BeginDraw due volte in una destinazione di rendering inserisce la destinazione in uno stato di errore in cui non viene disegnato altro e restituisce informazioni di errore e HRESULT appropriate quando viene chiamato EndDraw .
Esempio
Nell'esempio seguente viene usato un ID2D1HwndRenderTarget per disegnare testo in una finestra.
// 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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | d2d1.h |
Libreria | D2d1.lib |
DLL | D2d1.dll |