Metode ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) (d2d1.h)
Menambahkan lapisan yang ditentukan ke target render sehingga menerima semua operasi gambar berikutnya hingga PopLayer dipanggil.
Sintaks
void PushLayer(
[ref] const D2D1_LAYER_PARAMETERS & layerParameters,
[in] ID2D1Layer *layer
);
Parameter
[ref] layerParameters
Jenis: const D2D1_LAYER_PARAMETERS
Batas konten, masker geometris, opasitas, masker opasitas, dan opsi antialias untuk lapisan.
[in] layer
Jenis: ID2D1Layer*
Lapisan yang menerima operasi gambar berikutnya.
Mengembalikan nilai
Tidak ada
Keterangan
Metode PushLayer memungkinkan penelepon untuk mulai mengalihkan penyajian ke lapisan. Semua operasi penyajian valid dalam lapisan. Lokasi lapisan dipengaruhi oleh transformasi dunia yang ditetapkan pada target render.
Setiap PushLayer harus memiliki panggilan PopLayer yang cocok. Jika ada lebih banyak panggilan PopLayer daripada panggilan PushLayer , target render ditempatkan ke dalam status kesalahan. Jika Flush dipanggil sebelum semua lapisan yang luar biasa muncul, target render ditempatkan ke dalam status kesalahan, dan kesalahan dikembalikan. Status kesalahan dapat dibersihkan dengan panggilan ke EndDraw.
Sumber daya ID2D1Layer tertentu hanya dapat aktif pada satu waktu. Dengan kata lain, Anda tidak dapat memanggil metode PushLayer , dan kemudian segera mengikuti dengan metode PushLayer lain dengan sumber daya lapisan yang sama. Sebagai gantinya, Anda harus memanggil metode PushLayer kedua dengan sumber daya lapisan yang berbeda.
Metode ini tidak mengembalikan kode kesalahan jika gagal. Untuk menentukan apakah operasi menggambar (seperti PushLayer) gagal, periksa hasil yang dikembalikan oleh metode ID2D1RenderTarget::EndDraw atau ID2D1RenderTarget::Flush .
Contoh
Contoh berikut menggunakan lapisan untuk mengklip bitmap ke masker geometris. Untuk contoh lengkapnya, lihat Cara Membuat Klip ke Masker Geometris.
HRESULT DemoApp::RenderWithLayer(ID2D1RenderTarget *pRT)
{
HRESULT hr = S_OK;
// Create a layer.
ID2D1Layer *pLayer = NULL;
hr = pRT->CreateLayer(NULL, &pLayer);
if (SUCCEEDED(hr))
{
pRT->SetTransform(D2D1::Matrix3x2F::Translation(350, 50));
// Push the layer with the geometric mask.
pRT->PushLayer(
D2D1::LayerParameters(D2D1::InfiniteRect(), m_pPathGeometry),
pLayer
);
pRT->DrawBitmap(m_pOrigBitmap, D2D1::RectF(0, 0, 200, 133));
pRT->FillRectangle(D2D1::RectF(0.f, 0.f, 25.f, 25.f), m_pSolidColorBrush);
pRT->FillRectangle(D2D1::RectF(25.f, 25.f, 50.f, 50.f), m_pSolidColorBrush);
pRT->FillRectangle(D2D1::RectF(50.f, 50.f, 75.f, 75.f), m_pSolidColorBrush);
pRT->FillRectangle(D2D1::RectF(75.f, 75.f, 100.f, 100.f), m_pSolidColorBrush);
pRT->FillRectangle(D2D1::RectF(100.f, 100.f, 125.f, 125.f), m_pSolidColorBrush);
pRT->FillRectangle(D2D1::RectF(125.f, 125.f, 150.f, 150.f), m_pSolidColorBrush);
pRT->PopLayer();
}
SafeRelease(&pLayer);
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 |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk