Bagikan melalui


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
gambar sebelum efek.
Sesudahnya
gambar setelah transformasi.
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

ID2D1Effect