Efek transformasi 3D
Gunakan efek transformasi 3D untuk menerapkan matriks transformasi 4x4 arbitrer ke gambar.
Efek ini menerapkan matriks (M?) yang Anda berikan ke sudut simpul gambar sumber ([ x y z 1 ]) menggunakan perhitungan ini:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
CLSID untuk efek ini CLSID_D2D13DTransform.
Contoh gambar
Sebelum |
---|
![]() |
Sesudah |
![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Properti efek
Mode interpolasi
Enumerasi | Deskripsi |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar kualitas terendah. |
D2D1_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi. |
D2D1_3DTRANSFORM_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_3DTRANSFORM_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_3DTRANSFORM_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. |
Kelas Matriks Transformasi 4x4
Direct2D menyediakan kelas matriks 4x4 untuk menyediakan fungsi pembantu untuk mengubah gambar dalam 3 dimensi. Lihat topikMatrix4x4F untuk informasi selengkapnya dan deskripsi semua anggota kelas.
Fungsi | Deskripsi | Matriks |
---|---|---|
Matriks4x4F::Scale(X, Y, Z) | Menghasilkan matriks transformasi yang menskalakan bidang proyeksi ke arah X, Y, dan/atau Z. | |
SkewX(X) | Menghasilkan matriks transformasi yang condong ke bidang proyeksi ke arah X. |
![]() |
Condong (Y) | Menghasilkan matriks transformasi yang condong ke bidang proyeksi ke arah Y. |
![]() |
Terjemahan(X, Y, Z) | Menghasilkan matriks transformasi yang menerjemahkan bidang proyeksi ke arah X, Y, atau Z. |
![]() |
RotasiX(X) | Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu X. |
![]() |
Rotasi (Y) | Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Y. |
![]() |
RotasiZ(Z) | Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Z. |
![]() |
PerspectiveProjection(D) | Transformasi perspektif dengan nilai kedalaman D. | |
RotationArbitraryAxis(X, Y, Z, derajat) | Memutar bidang proyeksi tentang sumbu yang Anda tentukan. |
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 |