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 |
---|
![]() |
Sesudahnya |
![]() |
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 |
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk