Bagikan melalui


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
gambar sebelum transformasi.
Sesudah
gambar setelah transformasi.
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.
Jenisnya 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, lembut atau keras. Lihat mode batas untuk informasi selengkapnya.
Jenisnya D2D1_BORDER_MODE.
Nilai default 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.
Matriks Kedalaman 3D Di mana:
X, Y, Z = Koordinat bidang proyeksi input
Mx,y = Mengubah elemen Matriks
Koordinat bidang proyeksi X , Y , Z =Output

Elemen matriks individual tidak terikat dan tidak bersatu.
Jenisnya D2D1_MATRIX_4X4_F.
Nilai default adalah Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1).

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. Menampilkan matriks condong ke arah X.
Condong (Y) Menghasilkan matriks transformasi yang condong ke bidang proyeksi ke arah Y. matriks condong
Terjemahan(X, Y, Z) Menghasilkan matriks transformasi yang menerjemahkan bidang proyeksi ke arah X, Y, atau Z. menerjemahkan matriks
RotasiX(X) Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu X. memutar matriks x
Rotasi (Y) Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Y. memutar matriks y
RotasiZ(Z) Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Z. memutar matriks 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

ID2D1Effect