Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 |