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

Sebelumnya
gambar sebelum transformasi.
Sesudahnya
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.
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.
Matriks Kedalaman 3D Mana:
X, Y, Z = Koordinat bidang proyeksi input
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. Matriks scale3d
SkewX(X) Menghasilkan matriks transformasi yang condong ke bidang proyeksi ke arah X. Memperlihatkan 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. putar x matriks
Rotasi (Y) Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Y. putar matriks y
RotasiZ(Z) Menghasilkan matriks transformasi yang memutar bidang proyeksi tentang sumbu Z. putar matriks z
PerspectiveProjection(D) Transformasi perspektif dengan nilai kedalaman D. Matriks perspektif
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

ID2D1Effect