Metode ID2D1RenderTarget::EndDraw (d2d1.h)
Mengakhiri operasi menggambar pada target render dan menunjukkan status kesalahan saat ini dan tag terkait.
Sintaks
HRESULT EndDraw(
[out, optional] D2D1_TAG *tag1,
[out, optional] D2D1_TAG *tag2
);
Parameter
[out, optional] tag1
Jenis: D2D1_TAG*
Ketika metode ini kembali, berisi tag untuk operasi menggambar yang menyebabkan kesalahan atau 0 jika tidak ada kesalahan. Parameter ini diteruskan tanpa diinisialisasi.
[out, optional] tag2
Jenis: D2D1_TAG*
Ketika metode ini kembali, berisi tag untuk operasi menggambar yang menyebabkan kesalahan atau 0 jika tidak ada kesalahan. Parameter ini diteruskan tanpa diinisialisasi.
Mengembalikan nilai
Jenis: HRESULT
Jika metode berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan dan mengatur tag1 dan tag2 ke tag yang aktif saat kesalahan terjadi.
Keterangan
Operasi menggambar hanya dapat dikeluarkan antara panggilan BeginDraw dan EndDraw .
BeginDraw dan EndDraw digunakan untuk menunjukkan bahwa target render sedang digunakan oleh sistem Direct2D. Implementasi ID2D1RenderTarget yang berbeda mungkin bersifat berbeda ketika BeginDraw dipanggil. ID2D1BitmapRenderTarget dapat dikunci antara panggilan BeginDraw/EndDraw, target render permukaan DXGI mungkin diperoleh pada BeginDraw dan dirilis di EndDraw, sementara ID2D1HwndRenderTarget dapat mulai batching di BeginDraw dan mungkin ada di EndDraw, misalnya.
Metode BeginDraw harus dipanggil sebelum operasi penyajian dapat dipanggil, meskipun operasi pengaturan status dan pengambilan status dapat dilakukan bahkan di luar BeginDraw/EndDraw.
Setelah BeginDraw dipanggil, target render biasanya akan membangun batch perintah penyajian, tetapi menangguhkan pemrosesan perintah ini sampai buffer internal penuh, metode Flush dipanggil, atau sampai EndDraw dipanggil. Metode EndDraw menyebabkan operasi gambar batch selesai, lalu mengembalikan HRESULT yang menunjukkan keberhasilan operasi dan, secara opsional, status tag dari target render pada saat kesalahan terjadi. Metode EndDraw selalu berhasil: metode ini tidak boleh dipanggil dua kali bahkan jika EndDraw sebelumnya menghasilkan HRESULT yang gagal.
Jika EndDraw dipanggil tanpa panggilan yang cocok ke BeginDraw, itu mengembalikan kesalahan yang menunjukkan bahwa BeginDraw harus dipanggil sebelum EndDraw.
Memanggil BeginDraw dua kali pada target render menempatkan target ke dalam status kesalahan di mana tidak ada yang digambar lebih lanjut, dan mengembalikan HRESULT yang sesuai dan informasi kesalahan ketika EndDraw dipanggil.
Contoh
Contoh berikut menggunakan ID2D1HwndRenderTarget untuk menggambar teks ke jendela.
// 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7, Windows Vista dengan SP2 dan Pembaruan Platform untuk Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 R2, Windows Server 2008 dengan SP2 dan Pembaruan Platform untuk Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | d2d1.h |
Pustaka | D2d1.lib |
DLL | D2d1.dll |