Efek peta perpindahan
Gunakan efek peta perpindahan untuk mengalihkan piksel gambar input dengan nilai intensitas gambar input kedua.
CLSID untuk efek ini CLSID_D2D1DisplacementMap.
Contoh gambar
Sebelum |
---|
![]() |
Sesudah |
![]() |
ComPtr<ID2D1Effect> displacementMapEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DisplacementMap, &displacementMapEffect);
displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);
// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(displacementMapEffect.Get());
m_d2dContext->EndDraw();
Lokasi piksel dalam output ditentukan menggunakan rumus ini:
C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0,5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0,5))
Mana:
-
C (x, y) adalah piksel output pada (x, y).
C (x, y) adalah piksel input pada (x, y).
Bitmap Perpindahan (x, y) adalah intensitas piksel perpindahan pada koordinat yang ditentukan
XChannelSelector intensitas saluran RGBA yang dipilih dari bitmap perpindahan yang menggantikan gambar input ke arah X.
YChannelSelector intensitas saluran RGBA yang dipilih dari bitmap perpindahan yang menggantikan gambar input ke arah Y.
Efek mengubah sampel gambar input sesuai dengan properti skala dan intensitas gambar perpindahan. Ini menggunakan interpolasi bilinear jika pengambilan sampel dari antara piksel dalam gambar input.
Efek ini bekerja pada gambar alfa lurus dan pramulatif. Format alfa output sama dengan format input.
Properti efek
Nama tampilan dan enumerasi indeks | Ketik dan nilai default | Deskripsi |
---|---|---|
Sisik D2D1_DISPLACEMENTMAP_PROP_SCALE |
MENGAPUNG 0.0f |
Mengalikan intensitas saluran yang dipilih dari gambar perpindahan. Semakin tinggi Anda mengatur properti ini, semakin banyak efek yang mengalihkan piksel |
XChannelPilih D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Efek mengekstrak intensitas dari saluran warna ini dan menggunakannya untuk secara spasial melarutkan gambar ke arah X. Lihat saluran Warna untuk informasi selengkapnya. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Efek mengekstrak intensitas dari saluran warna ini dan menggunakannya untuk secara spasial mengalihkan gambar ke arah Y. Lihat saluran Warna untuk informasi selengkapnya. |
Saluran warna
Enumerasi | Deskripsi |
---|---|
D2D1_CHANNEL_SELECTOR_R | Efek mengekstrak output intensitas dari saluran merah. |
D2D1_CHANNEL_SELECTOR_G | Efek mengekstrak output intensitas dari saluran hijau. |
D2D1_CHANNEL_SELECTOR_B | Efek mengekstrak output intensitas dari saluran biru. |
D2D1_CHANNEL_SELECTOR_A | Efek mengekstrak output intensitas dari saluran alfa. |
Output Bitmap
Anda dapat menentukan ukuran maksimum bitmap output dengan persamaan ini:
Bitmap Output? Pixels=(Ukuran Bitmap Input?( DIPs)+Scale)*(User DPI/96)
Bitmap Outputy Pixels=(Ukuran Bitmap Inputy(DIP) + Skala)*(DPI Pengguna/96)
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 |