Metodo ID2D1RenderTarget::BeginDraw (d2d1.h)
Avvia il disegno su questa destinazione di rendering.
Sintassi
void BeginDraw();
Valore restituito
nessuno
Osservazioni
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 |