Bagikan melalui


Efek transformasi perspektif 3D

Gunakan efek transformasi perspektif 3D untuk memutar gambar dalam 3 dimensi seolah-olah dilihat dari jarak jauh.

Transformasi perspektif 3D lebih nyaman daripada efek transformasi 3D, tetapi hanya mengekspos subset fungsionalitas. Anda dapat menghitung matriks transformasi 3D penuh dan menerapkan matriks transformasi yang lebih arbitrer ke gambar menggunakan efek transformasi 3D .

CLSID untuk efek ini CLSID_D2D13DPerspectiveTransform.

Contoh gambar

Sebelumnya
gambar sebelum efek.
Sesudahnya
gambar setelah efek .
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);

perspectiveTransformEffect->SetInput(0, bitmap);

perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();

Properti efek

Nama tampilan dan enumerasi indeks Deskripsi
InterpolationMode
D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE
Mode interpolasi yang digunakan efek pada gambar. Ada 5 mode skala yang berkisar dalam kualitas dan kecepatan.
Jenisnya D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE.
Nilai defaultnya adalah D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE
Mode yang digunakan untuk menghitung batas gambar, lembut atau keras. Lihat Mode batas untuk informasi selengkapnya.
Jenisnya D2D1_BORDER_MODE.
Nilai defaultnya adalah D2D1_BORDER_MODE_SOFT.
Kedalaman
D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH
Jarak dari PerspectiveOrigin ke bidang proyeksi. Nilai yang ditentukan dalam DIP dan harus lebih besar dari 0.
Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1000,0f.
PerspektifOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN
Lokasi X dan Y penampil dalam adegan 3D. Properti ini adalah D2D1_VECTOR_2F yang didefinisikan sebagai: (titik X, titik Y). Unit berada di DIP.
Anda mengatur nilai Z dengan properti Kedalaman .
Jenisnya D2D1_VECTOR_2F.
Nilai defaultnya adalah {0.0f, 0.0f}.
LocalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET
Terjemahan yang dilakukan efek sebelum memutar bidang proyeksi. Properti ini adalah D2D1_VECTOR_3F yang didefinisikan sebagai: (X, Y, Z). Unit berada di DIP.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.
GlobalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET
Terjemahan yang dilakukan efek setelah memutar bidang proyeksi. Properti ini adalah D2D1_VECTOR_3F yang didefinisikan sebagai: (X, Y, Z). Unit berada di DIP.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.
RotationOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN
Titik tengah rotasi yang dilakukan efek. Properti ini adalah D2D1_VECTOR_3F yang didefinisikan sebagai: (X, Y, Z). Unit berada di DIP.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.
Rotasi
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION
Sudut rotasi untuk setiap sumbu. Properti ini adalah D2D1_VECTOR_3F yang didefinisikan sebagai: (X, Y, Z). Unitnya dalam derajat.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.

Mode interpolasi

Enumeration Deskripsi
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar berkualitas terendah.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR Menggunakan sampel empat titik dan interpolasi linier. Mode ini menggunakan lebih banyak waktu pemrosesan daripada mode tetangga terdekat, tetapi menghasilkan gambar berkualitas lebih tinggi.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Menggunakan 4 sampel linier dalam satu piksel untuk anti-aliasing tepi yang baik. Mode ini baik untuk menurunkan skala dengan jumlah kecil pada gambar dengan beberapa piksel.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Menggunakan pemfilteran anisotropik untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah.

Catatan

Jika Anda tidak memilih mode, efek akan default ke D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.

Catatan

Mode Anisotropic menghasilkan mipmap saat penskalaan, namun, jika Anda mengatur properti Cache ke true pada efek yang dimasukkan ke efek ini, mipmaps tidak akan dihasilkan setiap kali untuk gambar yang cukup kecil.

Mode batas

Nama Deskripsi
D2D1_BORDER_MODE_SOFT Efek menyamarkan gambar dengan piksel hitam transparan saat diinterpolasi, menghasilkan tepi lembut.
D2D1_BORDER_MODE_HARD Efek menjepit output ke ukuran gambar input.

Bitmap output

Ukuran bitmap output tergantung pada matriks transformasi yang diterapkan pada gambar.

Efek melakukan operasi transformasi lalu menerapkan kotak pembatas di sekitar hasil. Bitmap output adalah ukuran kotak pembatas.

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