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
Sebelumnya |
---|
![]() |
Sesudahnya |
![]() |
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
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Mode interpolasi yang digunakan efek pada gambar. Ada 5 mode skala yang berkisar dalam kualitas dan kecepatan. Jenis D2D1_3DTRANSFORM_INTERPOLATION_MODE. Nilai defaultnya adalah D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Mode yang digunakan untuk menghitung batas gambar, lunak, atau keras. Lihat Mode batas untuk informasi selengkapnya. Jenis D2D1_BORDER_MODE. Nilai defaultnya adalah D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Matriks transformasi 4x4 diterapkan ke bidang proyeksi. Perhitungan matriks berikut digunakan untuk memetakan titik dari satu sistem koordinat 3D ke sistem koordinat 2D yang diubah. ![]()
Mx,y = Mengubah elemen Matriks Koordinat bidang proyeksi X , Y , Z =Output Elemen matriks individu tidak terikat dan tidak bersatu. Jenisnya D2D1_MATRIX_4X4_F. Nilai defaultnya adalah Matriks4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1). |
Mode interpolasi
Enumeration | 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-alias 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. |
Catatan
Jika Anda tidak memilih mode, efek defaultnya akan D2D1_3DTRANSFORM_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. |
Kelas Matriks Transformasi 4x4
Direct2D menyediakan kelas matriks 4x4 untuk menyediakan fungsi pembantu untuk mengubah gambar dalam 3 dimensi. Lihat topik Matrix4x4F untuk informasi selengkapnya dan deskripsi semua anggota kelas.
Fungsi | Deskripsi | Matrix |
---|---|---|
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
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