Efek skala
Gunakan efek ini untuk menskalakan gambar ke atas atau ke bawah. Efeknya memiliki enam mode penskalakan: tetangga terdekat, linear, kubik, linier multi-sampel, anisotropic, dan kubik berkualitas tinggi.
CLSID untuk efek ini CLSID_D2D1Scale.
Contoh gambar
Contoh ini menunjukkan pembesaran efek skala dalam 2 kali input dan pemotongan ke ukuran asli.
Sebelumnya |
---|
Sesudahnya |
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);
scaleEffect->SetInput(0, bitmap);
scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
Skala D2D1_SCALE_PROP_SCALE |
Jumlah skala dalam arah X dan Y sebagai rasio ukuran output terhadap ukuran input. Properti ini D2D1_VECTOR_2Fdefined sebagai: (skala X, skala Y). Jumlah skalanya adalah FLOAT, tanpa unit, dan harus positif atau 0. Jenisnya D2D1_VECTOR_2F. Nilai defaultnya adalah {1.0f, 1.0f}. |
Titik Tengah D2D1_SCALE_PROP_CENTER_POINT |
Titik tengah penskalan gambar. Properti ini adalah D2D1_VECTOR_2F yang didefinisikan sebagai: (titik X, titik Y). Unit berada di DIP. Gunakan properti titik tengah untuk menskalakan di sekitar titik selain sudut kiri atas. Jenisnya D2D1_VECTOR_2F. Nilai defaultnya adalah {0.0f, 0.0f}. |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
Mode yang digunakan untuk menghitung batas gambar, lunak, atau keras. Lihat Mode batas untuk informasi selengkapnya. Jenisnya D2D1_BORDER_MODE. Nilai defaultnya adalah D2D1_BORDER_MODE_SOFT. |
Ketajaman D2D1_SCALE_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 menurunkan skala gambar. Faktor ketajaman mempengaruhi bentuk kernel. Semakin tinggi faktor ketajaman, semakin kecil kernel. Catatan: Properti ini hanya mempengaruhi mode interpolasi kubik berkualitas tinggi. Jenisnya adalah FLOAT. Nilai defaultnya adalah 0,0f. |
InterpolationMode D2D1_SCALE_PROP_INTERPOLATION_MODE |
Mode interpolasi yang digunakan efek untuk menskalakan gambar. Ada 6 mode skala yang berkisar dalam kualitas dan kecepatan. Lihat Mode interpolasi untuk informasi selengkapnya. Jenisnya D2D1_SCALE_INTERPOLATION_MODE. Nilai defaultnya adalah D2D1_SCALE_INTERPOLATION_MODE_LINEAR. |
Mode batas
Nama | Deskripsi |
---|---|
D2D1_BORDER_MODE_SOFT | Efek menyatukan gambar input dengan piksel hitam transparan untuk sampel di luar batas input saat menerapkan kernel konvolusi. Ini menciptakan tepi lembut untuk gambar, dan dalam prosesnya memperluas bitmap output dengan ukuran kernel. |
D2D1_BORDER_MODE_HARD | Efek memperluas gambar input dengan transformasi batas jenis cermin untuk sampel di luar batas input. Ukuran bitmap output sama dengan ukuran bitmap input. |
`
Mode interpolasi
Enumeration | Deskripsi |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Sampel titik tunggal terdekat dan menggunakannya. Mode ini menggunakan lebih sedikit waktu pemrosesan, tetapi menghasilkan gambar kualitas terendah. |
D2D1_SCALE_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_SCALE_INTERPOLATION_MODE_CUBIC | Menggunakan 16 sampel kernel kubik untuk interpolasi. Mode ini menggunakan waktu pemrosesan terbanyak, tetapi menghasilkan gambar berkualitas lebih tinggi. |
D2D1_SCALE_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_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Menggunakan pemfilteran anisotropic untuk mengambil sampel pola sesuai dengan bentuk bitmap yang diubah. |
D2D1_SCALE_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. |
Catatan
Jika Anda tidak memilih mode, efek akan default ke D2D1_SCALE_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.
Bitmap output
Lokasi dan ukuran bitmap output tergantung pada faktor skala dan titik pusat yang ditentukan.
Anda dapat menghitung ukuran bitmap output menggunakan persamaan ini:
- BitmapSizex(Pixels)=Skalax*Ukuran Bitmap Aslix (DIP)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIP)*(UserDPI/96)
Efek membulatkan pecahan piksel ke atas ke seluruh piksel terdekat.
Lokasi bitmap adalah (0, 0) atau nilai properti titik tengah.
Persyaratan
Persyaratan | 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 |
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