Bagikan melalui


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


Catatan Mengubah target tidak mengubah bitmap yang disajikan target render HWND, juga tidak mengubah bitmap tempat target render DC blts menjadi/dari.
 
API ini memudahkan aplikasi untuk menggunakan bitmap sebagai sumber (seperti di DrawBitmap) dan sebagai tujuan secara bersamaan. Mencoba menggunakan bitmap sebagai sumber pada konteks perangkat yang sama yang terikat sebagai target akan menempatkan konteks perangkat ke dalam status kesalahan D2DERR_BITMAP_BOUND_AS_TARGET.

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

ID2D1Bitmap1

ID2D1DeviceContext

ID2D1DeviceContext::CreateBitmap

ID2D1DeviceContext::GetTarget