Metode ID2D1DeviceContext::SetTarget (d2d1_1.h)
Bitmap atau daftar perintah tempat konteks perangkat Direct2D sekarang akan dirender.
Sintaks
void SetTarget(
[in, optional] ID2D1Image *image
);
Parameter
[in, optional] image
Jenis: ID2D1Image*
Permukaan atau daftar perintah yang akan dirender konteks perangkat Direct2D.
Nilai kembali
Tidak ada
Keterangan
Target dapat diubah kapan saja, termasuk saat konteks menggambar.
Target dapat berupa bitmap yang dibuat dengan bendera D2D1_BITMAP_OPTIONS_TARGET , atau bisa menjadi daftar perintah. Jenis gambar lain tidak dapat ditetapkan sebagai target. Misalnya, Anda tidak dapat mengatur output efek sebagai target. Jika target tidak valid, konteks akan memasuki status kesalahan D2DERR_INVALID_TARGET .
Anda tidak dapat menggunakan SetTarget untuk merender ke daftar bitmap/perintah dari beberapa konteks perangkat secara bersamaan. Gambar dianggap "sedang dirender ke" jika pernah diatur pada konteks perangkat dalam rentang waktu BeginDraw/EndDraw . Jika upaya dilakukan untuk merender ke gambar melalui beberapa konteks perangkat, semua konteks perangkat berikutnya setelah yang pertama akan memasuki status kesalahan.
Penelepon yang ingin melampirkan gambar ke konteks perangkat kedua harus terlebih dahulu memanggil EndDraw pada konteks perangkat pertama.
Berikut adalah contoh pesanan panggilan yang benar.
pDC1->BeginDraw();
pDC1->SetTarget(pImage);
// …
pDC1->EndDraw();
pDC2->BeginDraw();
pDC2->SetTarget(pImage);
// …
pDC2->EndDraw();
Berikut adalah contoh pesanan panggilan yang salah.
pDC1->BeginDraw();
pDC2->BeginDraw();
pDC1->SetTarget(pImage);
// ...
pDC1->SetTarget(NULL);
pDC2->SetTarget(pImage); // This call is invalid, even though pImage is no longer set on pDC1.
// ...
pDC1->EndDraw(); // This EndDraw SUCCEEDs.
pDC2->EndDraw(); // This EndDraw FAILs
Dapat diterima untuk memiliki bitmap yang terikat sebagai bitmap target pada beberapa target render sekaligus. Aplikasi yang melakukan ini harus menyinkronkan penyajian dengan benar dengan Flush atau EndDraw.
Anda dapat mengubah target kapan saja, termasuk saat konteks sedang menggambar.
Anda dapat mengatur target ke NULL, dalam hal ini panggilan gambar akan menempatkan konteks perangkat ke dalam status kesalahan dengan D2DERR_WRONG_STATE. Memanggil SetTarget dengan target NULL tidak memulihkan bitmap target asli ke konteks perangkat.
Jika konteks perangkat memiliki HDC yang luar biasa, konteksnya akan memasuki status kesalahan D2DERR_WRONG_STATE . Target tidak akan diubah.
Jika bitmap dan konteks perangkat tidak berada di domain sumber daya yang sama, konteksnya akan memasuki \ status kesalahan. Target tidak akan diubah.
ID2D1RenderTarget::GetPixelSize mengembalikan ukuran bitmap target saat ini (atau 0, 0) jika tidak ada batas bitmap). ID2D1RenderTarget::GetSize mengembalikan ukuran piksel bitmap saat ini yang diskalakan oleh DPI dari target render. SetTarget tidak memengaruhi DPI target render.
ID2D1RenderTarget::GetPixelFormat mengembalikan format piksel bitmap target saat ini (atau DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN jika tidak ada).
ID2D1Bitmap::CopyFromRenderTarget menyalin dari bitmap target yang saat ini terikat.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 dan Platform Update untuk Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | d2d1_1.h |
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