Effekt på förskjutningskarta
Använd förskjutningskartans effekt för att förskjuta bildpunkterna i indatabilden med hjälp av intensitetsvärdena för en andra indatabild.
CLSID för den här effekten är CLSID_D2D1DisplacementMap.
- Exempelbild
- egenskaper för effekt
- Färgkanaler
- bitmapp för utdata
- Krav
- Relaterade ämnen
Exempelbild
Före |
---|
![]() |
Efter |
![]() |
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();
Platserna för bildpunkterna i utdata bestäms med hjälp av den här formeln:
C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0.5))
Var:
-
C (x, y) är utdatapixel vid (x, y).
C (x, y) är indatapixel på (x, y).
förskjutningsbitmapp (x, y) är förskjutningspixelintensiteten vid de angivna koordinaterna
XChannelSelector intensiteten för den valda RGBA-kanalen från förskjutningsbitmappen som förskjuter indatabilden i X-riktningen.
YChannelSelector intensiteten för den valda RGBA-kanalen från förskjutningsbitmappen som förskjuter indatabilden i Y-riktningen.
Effekten omsamplar indatabilden enligt skalningsegenskapen och förskjutningsbildens intensitet. Den använder bilinearinterpolation om sampling från mellan bildpunkter i indatabilden.
Den här effekten fungerar på raka och förmultiplierade alfabilder. Alfaformatet för utdata är detsamma som indataformatet.
Effektegenskaper
Visningsnamn och indexuppräkning | Typ- och standardvärde | Beskrivning |
---|---|---|
Skala D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLYTA 0.0f |
Multiplicerar intensiteten för den valda kanalen från förskjutningsbilden. Ju högre du anger den här egenskapen, desto mer förskjuter effekten bildpunkterna |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Effekten extraherar intensiteten från den här färgkanalen och använder den för att förskjuta bilden i X-riktningen. Mer information finns i Färgkanaler. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Effekten extraherar intensiteten från den här färgkanalen och använder den för att rumsligt förskjuta bilden i Y-riktningen. Mer information finns i Färgkanaler. |
Färgkanaler
Uppräkning | Beskrivning |
---|---|
D2D1_CHANNEL_SELECTOR_R | Effekten extraherar intensitetsutdata från den röda kanalen. |
D2D1_CHANNEL_SELECTOR_G | Effekten extraherar intensitetsutdata från den gröna kanalen. |
D2D1_CHANNEL_SELECTOR_B | Effekten extraherar intensitetsutdata från den blå kanalen. |
D2D1_CHANNEL_SELECTOR_A | Effekten extraherar intensitetsutdata från alfakanalen. |
Utdatabitmapp
Du kan fastställa den maximala storleken på utdatabitmappen med följande ekvationer:
Utdatabitmapp? Pixels=(Indatabitmappsstorlek?( DIPs)+Scale)*(User DPI/96)
Utdatabitmappy Pixels=(Indatabitmappsstorleky(DIPs) + skala)*(Användar-DPI/96)
Krav
Krav | Värde |
---|---|
Lägsta klient som stöds | Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar] |
Lägsta server som stöds | Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar] |
Rubrik | d2d1effects.h |
Bibliotek | d2d1.lib, dxguid.lib |