Efecto de sombra
Use el efecto de sombra para generar una sombra a partir del canal alfa de una imagen. La sombra es más opaca para valores alfa más altos y más transparente para los valores alfa inferiores. Puede establecer la cantidad de desenfoque y el color de la sombra.
- Imagen de ejemplo
- Propiedades de efecto
- Modos de optimización
- Mapa de bits de salida
- Requisitos
- Temas relacionados
El CLSID de este efecto es CLSID_D2D1Shadow.
Imagen de ejemplo
En el ejemplo siguiente se muestra la salida del efecto de sombra traducida hacia abajo y derecha con la imagen de origen compuesta sobre ella en la ubicación original. El efecto de sombra solo genera la sombra.
Antes |
---|
Después |
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);
shadowEffect->SetInput(0, bitmap);
// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);
floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInputEffect(0, shadowEffect.Get());
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
Propiedades de efecto
Enumeración de índice y nombre para mostrar | Descripción |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Cantidad de desenfoque que se va a aplicar al canal alfa de la imagen. Puede calcular el radio de desenfoque del kernel multiplicando la desviación estándar por 3. Las unidades de la desviación estándar y el radio de desenfoque son DIP. Esta propiedad es la misma que la propiedad de desviación estándar Desenfoque gaussiana . El tipo es FLOAT. El valor predeterminado es 3.0f. |
Color D2D1_SHADOW_PROP_COLOR |
Color de la sombra paralela. Esta propiedad es un D2D1_VECTOR_4F definido como: (R, G, B, A). Debe especificar este color en alfa recto. El tipo es D2D1_VECTOR_4F. El valor predeterminado es {0.0f, 0.0f, 0.0f, 1.0f}. |
Optimization D2D1_SHADOW_PROP_OPTIMIZATION |
Nivel de optimización del rendimiento. El tipo es D2D1_SHADOW_OPTIMIZATION. El valor predeterminado es D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Modos de optimización
Nombre | Descripción |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Aplica optimizaciones internas, como el escalado previo a los radios relativamente pequeños. Usa el filtrado lineal. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Usa los mismos umbrales de optimización que el modo Velocidad, pero usa el filtrado trilineal. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Solo usa optimizaciones internas con radios de desenfoque grandes, donde es menos probable que las aproximaciones sean visibles. Usa el filtrado trilineal. |
Mapa de bits de salida
El tamaño del mapa de bits de salida es el tamaño de la salida de desenfoque. La cantidad de crecimiento del mapa de bits de salida en relación con el mapa de bits original se puede calcular mediante la siguiente ecuación:
Crecimiento del mapa de bits de salida (X e Y) = BlurStandardDeviation (píxeles independientes del dispositivo (DIP))*6*(PPP de usuario)/96
La salida aumenta igualmente en todas las direcciones, por lo que, por ejemplo, si el tamaño aumenta en 10 píxeles en cada dirección, la esquina superior izquierda del mapa de bits se encuentra en (-5, -5) y la parte inferior derecha estará en (105, 105) como se muestra en el diagrama aquí.
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 |