Efek Atlas
Anda dapat menggunakan efek ini untuk menghasilkan sebagian gambar tetapi mempertahankan wilayah di luar bagian untuk digunakan dalam operasi berikutnya.
CLSID untuk efek ini CLSID_D2D1Atlas.
Efek atlas berguna jika Anda ingin memuat gambar besar yang terdiri dari banyak gambar yang lebih kecil, seperti berbagai bingkai sprite.
Untuk membuat output efek:
- Memangkas input ke properti InputRect yang diberikan.
- Menerjemahkan asal hasil menjadi (0,0).
Catatan
Properti InputPaddingRect hanya boleh lebih besar jika dan hanya jika piksel di antara dua persegi panjang berwarna hitam transparan pada input. Hal ini dapat mengakibatkan Direct2D mengeksekusi grafik lebih optimal.
Berikut adalah contoh efeknya. Gambar ini kecil dan sederhana untuk tujuan ilustrasi.
Gambar sebelumnya adalah input ke efek. Kode di sini membuat efek atlas, mengatur input, mengatur persegi input, lalu menggambar output.
ComPtr<ID2D1Effect> atlasEffect;
// Create the Atlas Effect.
DX::ThrowIfFailed(m_d2dContext->CreateEffect(CLSID_D2D1Atlas, &atlasEffect));
// Set the input.
atlasEffect->SetInputEffect(0, inputImage.Get());
// The images here are 150 x 150 pixels.
float size = 150.0f;
// Compensate for the padding between images.
float padding = 10.0f;
// The input rectangle. 150 x 150 pixels with 10 pixel padding
D2D1_Vector_4F inputRect = D2D1::Vector4F(size + (padding * 2), padding, size, size);
DX::ThrowIfFailed(atlasEffect->SetValue(D2D1_ATLAS_PROP_INPUT_RECT, inputRect));
// Draw the image
m_d2dContext->DrawImage(atlasEffect.Get());
Kode sebelumnya memilih persegi panjang yang berada di sekitar segitiga kedua. Padding di sekitarnya diabaikan. Berikut adalah gambar yang dihasilkan.
Catatan
Ini adalah situasi di mana Anda dapat memilih untuk menentukan InputPaddingRect karena padding berwarna hitam transparan. Persegi panjangnya adalah D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);
.
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
InputRect D2D1_ATLAS_PROP_INPUT_RECT |
Bagian gambar diteruskan ke efek berikutnya. Jenis D2D1_VECTOR_4F. Nilai defaultnya adalah (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX). |
InputPaddingRect D2D1_ATLAS_PROP_INPUT_PADDING_RECT |
Ukuran maksimum yang diambil sampelnya untuk persegi output. Jenis D2D1_VECTOR_4F. Nilai defaultnya adalah (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX). |
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Server minimum yang didukung | Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Header | d2d1effects.h |
Pustaka | d2d1.lib, dxguid.lib |