Efek transformasi affine 2D
Efek transformasi affine 2D menerapkan transformasi spasial ke gambar berdasarkan matriks 3X2 menggunakan matriks Direct2D mengubah dan salah satu dari enam mode interpolasi. Anda dapat menggunakan efek ini untuk memutar, menskalakan, condong, atau menerjemahkan gambar. Atau, Anda dapat menggabungkan operasi ini. Transfer affine mempertahankan garis paralel dan rasio jarak antara tiga titik dalam gambar.
CLSID untuk efek ini CLSID_D2D12DAffineTransform.
Contoh gambar
Sebelum |
---|
![]() |
Sesudah |
![]() |
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInput(0, bitmap);
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();
Efek ini melakukan operasi matriks ini:
Meskipun matriks input didefinisikan sebagai matriks 3x2, kolom terakhir diisi dengan 0, 0 dan 1 untuk menghasilkan matriks persegi. Ini memungkinkan perkalian matriks, sehingga transformasi dapat digabungkan menjadi satu matriks.
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
InterpolationMode D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE |
Mode interpolasi yang digunakan untuk menskalakan gambar. Ada 6 mode skala yang berkisar dalam kualitas dan kecepatan. Jenisnya D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE. Nilai defaultnya adalah D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX |
Matriks 3x2 untuk mengubah gambar menggunakan matriks Direct2D mengubah. Jenis D2D1_MATRIX_3X2_F. Nilai defaultnya adalah Matrix3x2F::Identity(). |
Ketajaman D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS |
Dalam mode interpolasi kubik berkualitas tinggi, tingkat ketajaman filter penskalaan sebagai float antara 0 dan 1. Nilainya tidak bersatu. Anda dapat menggunakan ketajaman untuk menyesuaikan kualitas gambar saat Anda menskalakan gambar. Faktor ketajaman mempengaruhi bentuk kernel. Semakin tinggi faktor ketajaman, semakin kecil kernel. Catatan: Properti ini hanya memengaruhi mode interpolasi kubik berkualitas tinggi. Jenisnya adalah FLOAT. Nilai defaultnya adalah 0,0f. |
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. |
Mode interpolasi
Enumerasi | Deskripsi |
---|---|
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar kualitas terendah. |
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC | Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi. |
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Menggunakan pemfilteran anisotropic untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Menggunakan ukuran variabel kernel kubik berkualitas tinggi untuk melakukan pra-downscale gambar jika downscaling terlibat dalam matriks transformasi. Kemudian menggunakan mode interpolasi kubik untuk output akhir. |
Nota
Jika Anda tidak memilih mode, efek akan default ke D2D1_2DAFFINETRANSFORM_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.
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
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 |