Efeito de 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.
- Imagem de exemplo
- Propriedades do efeito
- Canais de cores
- Bitmap de saída
- Requirements
- Tópicos relacionados
Imagem de exemplo
Antes |
---|
After (após) |
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(Displacement Bitmap (x,y))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0.5))
Em que:
-
C (x, y) é o pixel de saída em (x, y).
C (x, y) é o pixel de entrada em (x, y).
O Bitmap de Deslocamento (x, y) é a intensidade de 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 amostra novamente 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 retas e pré-multiplicadas. O formato alfa de saída é o mesmo que o formato de entrada.
Propriedades do efeito
Nome de exibição e enumeração de índice | Tipo e valor padrão | Descrição |
---|---|---|
Escala D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOAT 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 o usa para deslocar espacialmente a imagem na direção X. Confira 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 o usa para deslocar espacialmente a imagem na direção Y. Confira 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)
Saída Bitmapy Pixels=(Input Bitmap Sizey(DIPs) + Scale)*(User DPI/96)
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Servidor mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |