Efecto de mapa de desplazamiento
Use el efecto de mapa de desplazamiento para desplazar los píxeles de la imagen de entrada por los valores de intensidad de una segunda imagen de entrada.
El CLSID de este efecto es CLSID_D2D1DisplacementMap.
- Imagen de ejemplo
- Propiedades de efecto
- Canales de color
- Mapa de bits de salida
- Requisitos
- Temas relacionados
Imagen de ejemplo
Antes |
---|
Despué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();
Las ubicaciones de los píxeles de la salida se determinan mediante 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))
Donde:
-
C (x, y) es el píxel de salida en (x, y).
C (x, y) es el píxel de entrada en (x, y).
El mapa de bits de desplazamiento (x, y) es la intensidad del píxel de desplazamiento en las coordenadas especificadas.
XChannelSelector la intensidad del canal RGBA seleccionado del mapa de bits de desplazamiento que desplaza la imagen de entrada en la dirección X.
YChannelSelector la intensidad del canal RGBA seleccionado del mapa de bits de desplazamiento que desplaza la imagen de entrada en la dirección Y.
El efecto reemplea la imagen de entrada según la propiedad de escala y la intensidad de la imagen de desplazamiento. Usa la interpolación bilineal si el muestreo de entre píxeles de la imagen de entrada.
Este efecto funciona en imágenes alfa rectas y premultiplicadas. El formato alfa de salida es el mismo que el formato de entrada.
Propiedades de efecto
Enumeración de nombre para mostrar e índice | Tipo y valor predeterminado | Descripción |
---|---|---|
Escala D2D1_DISPLACEMENTMAP_PROP_SCALE |
FLOAT 0.0f |
Multiplica la intensidad del canal seleccionado a partir de la imagen de desplazamiento. Cuanto mayor establezca esta propiedad, más el efecto desplaza los píxeles. |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
El efecto extrae la intensidad de este canal de color y la usa para desplazar espacialmente la imagen en la dirección X. Consulta Canales de color para obtener más información. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
El efecto extrae la intensidad de este canal de color y la usa para desplazar espacialmente la imagen en la dirección Y. Consulta Canales de color para obtener más información. |
Canales de color
Enumeración | Descripción |
---|---|
D2D1_CHANNEL_SELECTOR_R | El efecto extrae la salida de intensidad del canal rojo. |
D2D1_CHANNEL_SELECTOR_G | El efecto extrae la salida de intensidad del canal verde. |
D2D1_CHANNEL_SELECTOR_B | El efecto extrae la salida de intensidad del canal azul. |
D2D1_CHANNEL_SELECTOR_A | El efecto extrae la salida de intensidad del canal alfa. |
Mapa de bits de salida
Puede determinar el tamaño máximo del mapa de bits de salida con estas ecuaciones:
¿Mapa de bits de salida? Pixels=(Input Bitmap Size?( DIPs)+Scale)*(User DPI/96)
Output Bitmapy Pixels=(Input Bitmap Sizey(DIPs) + Scale)*(User DPI/96)
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |