Bagikan melalui


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:

  1. Memangkas input ke properti InputRect yang diberikan.
  2. 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 input.

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.

gambar output.

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);.

Properti efek

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

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

ID2D1Effect