Yer değiştirme haritası efekti

Giriş görüntüsünün piksellerini ikinci bir giriş görüntüsünün yoğunluk değerlerine göre değiştirmek için yer değiştirme eşleme efektini kullanın.

Bu etki için CLSID CLSID_D2D1DisplacementMap.

Örnek resim

Önce
Efektin önüne görüntüyü .
Sonra
Dönüştürmeden sonra görüntüyü .
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();

Çıktıdaki piksellerin konumları şu formül kullanılarak belirlenir:

C' (x,y)=C(x+ ölçeği*(XChannelSelector(Yer Değiştirme Bit Eşlemi (x,y))-0,5),y+ ölçek*(YChannelSelector(Yer Değiştirme Bit Eşlemi (x,y))-0,5))

Nerede:

C (x, y) (x, y) çıkış pikselidir.
C (x, y) (x, y) giriş pikselidir.
Yer Değiştirme Bit Eşlemi (x, y) belirtilen koordinatlarda yer değiştirme piksel yoğunluğudur
XChannelSelector, seçilen RGBA kanalının giriş görüntüsünü X yönünde yer değiştiren yer değiştirme bit eşleminden yoğunluğunu.
YChannelSelector, giriş görüntüsünü Y yönünde değiştiren yer değiştirme bit eşleminden seçilen RGBA kanalının yoğunluğunu.

Efekt, giriş görüntüsünü ölçek özelliğine ve yer değiştirme görüntüsünün yoğunluğuna göre yeniden örneklenir. Giriş görüntüsündeki pikseller arasında örnekleme varsa bilinear ilişkilendirme kullanır.

Bu etki düz ve önceden yüklenmiş alfa görüntülerinde çalışır. Çıktı alfa biçimi, giriş biçimiyle aynıdır.

Efekt özellikleri

Görünen ad ve dizin numaralandırması Tür ve varsayılan değer Açıklama
Ölçeklemek
D2D1_DISPLACEMENTMAP_PROP_SCALE
YÜZMEK
0,0f
Yer değiştirme görüntüsünden seçilen kanalın yoğunluğunu çarpar. Bu özelliği ne kadar yüksek ayarlarsanız, efekt pikselleri o kadar fazla yerinden eder
XChannelSelect
D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
Efekt, bu renk kanalındaki yoğunluğu ayıklar ve görüntüyü X yönünde uzamsal olarak yer değiştirmek için kullanır. Daha fazla bilgi için bkz. Color channels.
YChannelSelect
D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
Efekt, bu renk kanalındaki yoğunluğu ayıklar ve görüntüyü uzamsal olarak Y yönünde yer değiştirmek için kullanır. Daha fazla bilgi için bkz. Color channels.

Renk kanalları

Sayım Açıklama
D2D1_CHANNEL_SELECTOR_R Etki, kırmızı kanaldan yoğunluk çıkışını ayıklar.
D2D1_CHANNEL_SELECTOR_G Etki, yeşil kanaldan yoğunluk çıkışını ayıklar.
D2D1_CHANNEL_SELECTOR_B Efekt, mavi kanaldan yoğunluk çıkışını ayıklar.
D2D1_CHANNEL_SELECTOR_A Etkisi alfa kanalından yoğunluk çıkışını ayıklar.

Çıktı Bit Eşlemi

Çıktı bit eşleminin en büyük boyutunu şu denklemlerle belirleyebilirsiniz:

Bit Eşlem çıktısı mı? Piksel=(Giriş Bit Eşlem Boyutu?( DIP'ler)+Ölçek)*(Kullanıcı DPI'sı/96)

Çıktı Bit Eşlemiy Piksel=(Giriş Bit Eşlem Boyutuy(DIPs) + Ölçek)*(Kullanıcı DPI/96)

Gereksinim -leri

Gereksinim Değer
Desteklenen en düşük istemci Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Desteklenen en düşük sunucu Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Üstbilgi d2d1effects.h
Kütüphane d2d1.lib, dxguid.lib

ID2D1Fefek