METODE ID2D1RenderTarget::BeginDraw (d2d1.h)
Memulai menggambar pada target render ini.
Sintaks
void BeginDraw();
Mengembalikan nilai
Tidak ada
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 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, EndDraw 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 lebih lanjut yang diambil, 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 |