Efeito do mapa de deslocamento
Use o efeito de mapa de deslocamento para deslocar os pixels da imagem de entrada pelos valores de intensidade de uma segunda imagem de entrada.
O CLSID para esse efeito é CLSID_D2D1DisplacementMap.
- de imagem de exemplo
- propriedades do efeito
- canais Color
- bitmap de saída
- requisitos de
- tópicos relacionados
Imagem de exemplo
Antes |
---|
![]() |
Depois |
![]() |
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();
Os locais dos pixels na saída são determinados usando esta fórmula:
C' (x,y)=C(x+ scale*(XChannelSelector(Deslocamento Bitmap (x,y)-0,5),y+ scale*(YChannelSelector(Deslocamento Bitmap (x,y))-0,5))
Onde:
-
C (x, y) é o pixel de saída em (x, y).
C (x, y) é o pixel de entrada em (x, y).
bitmap de deslocamento (x, y) é a intensidade do pixel de deslocamento nas coordenadas especificadas
XChannelSelector a intensidade do canal RGBA selecionado do bitmap de deslocamento que desloca a imagem de entrada na direção X.
YChannelSelector a intensidade do canal RGBA selecionado do bitmap de deslocamento que desloca a imagem de entrada na direção Y.
O efeito resampla a imagem de entrada de acordo com a propriedade de escala e a intensidade da imagem de deslocamento. Ele usa interpolação bilinear se a amostragem entre pixels na imagem de entrada.
Esse efeito funciona em imagens alfa retos e pré-multiplicadas. O formato alfa de saída é o mesmo que o formato de entrada.
Propriedades de efeito
Nome de exibição e enumeração de índice | Tipo e valor padrão | Descrição |
---|---|---|
Escala D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLUTUAR 0,0f |
Multiplica a intensidade do canal selecionado da imagem de deslocamento. Quanto mais alta você definir essa propriedade, mais o efeito deslocará os pixels |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
O efeito extrai a intensidade desse canal de cores e a usa para deslocar espacialmente a imagem na direção X. Consulte Canais de cores para obter mais informações. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
O efeito extrai a intensidade desse canal de cores e a usa para deslocar espacialmente a imagem na direção Y. Consulte Canais de cores para obter mais informações. |
Canais de cores
Enumeração | Descrição |
---|---|
D2D1_CHANNEL_SELECTOR_R | O efeito extrai a saída de intensidade do canal vermelho. |
D2D1_CHANNEL_SELECTOR_G | O efeito extrai a saída de intensidade do canal verde. |
D2D1_CHANNEL_SELECTOR_B | O efeito extrai a saída de intensidade do canal azul. |
D2D1_CHANNEL_SELECTOR_A | O efeito extrai a saída de intensidade do canal alfa. |
Bitmap de saída
Você pode determinar o tamanho máximo do bitmap de saída com estas equações:
Bitmap de saída? Pixels=(Tamanho do bitmap de entrada?( DIPs)+Escala)*(DPI do Usuário/96)
Bitmap de saíday Pixels=(Tamanho do Bitmap de Entraday(DIPs) + Escala)*(DPI do Usuário/96)
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Servidor mínimo com suporte | Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |