Bagikan melalui


Efek transformasi perspektif 3D

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

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 semena-mena pada gambar menggunakan transformasi 3D.

CLSID untuk efek ini CLSID_D2D13DPerspectiveTransform.

Contoh gambar

Sebelum
gambar sebelum efek.
Sesudah
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 default adalah D2D1_BORDER_MODE_SOFT.
Dalam
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 di adegan 3D. Properti ini adalah D2D1_VECTOR_2F yang didefinisikan sebagai: (titik X, titik Y). Unit berada dalam 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 dalam 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 dalam DIP.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.
RotasiOrigin
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 dalam 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). Unit dalam derajat.
Jenisnya D2D1_VECTOR_3F.
Nilai defaultnya adalah {0.0f, 0.0f, 0.0f}.

Mode interpolasi

Enumerasi Deskripsi
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar kualitas 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 anisotropic untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah.

Nota

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

Nota

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

Mode batas

Nama Deskripsi
D2D1_BORDER_MODE_SOFT Efek mengalihkan 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

Syarat Nilai
Klien minimum yang didukung Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Server minimum yang didukung Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Header d2d1effects.h
Perpustakaan d2d1.lib, dxguid.lib

ID2D1Effect