Efeito de sombra
Use o efeito de sombra para gerar uma sombra do canal alfa de uma imagem. A sombra é mais opaca para valores alfa mais altos e mais transparente para valores alfa mais baixos. Você pode definir a quantidade de desfoque e a cor da sombra.
- Imagem de exemplo
- Propriedades de efeito
- Modos de otimização
- Bitmap de saída
- Requirements
- Tópicos relacionados
O CLSID para esse efeito é CLSID_D2D1Shadow.
Imagem de exemplo
O exemplo aqui mostra a saída do efeito de sombra traduzida para baixo e para a direita com a imagem de origem composta sobre ela no local original. O efeito de sombra gera apenas a sombra.
Antes |
---|
After (apó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();
Propriedades de efeito
Nome de exibição e enumeração de índice | Descrição |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
A quantidade de desfoque a ser aplicada ao canal alfa da imagem. Você pode calcular o raio de desfoque do kernel multiplicando o desvio padrão por 3. As unidades do desvio padrão e do raio de desfoque são DIPs. Essa propriedade é igual à propriedade de desvio padrão Gaussian Blur . O tipo é FLOAT. O valor padrão é 3,0f. |
Cor D2D1_SHADOW_PROP_COLOR |
A cor da sombra. Essa propriedade é uma D2D1_VECTOR_4F definida como: (R, G, B, A). Você deve especificar essa cor em alfa reto. O tipo é D2D1_VECTOR_4F. O valor padrão é {0.0f, 0.0f, 0.0f, 1.0f}. |
Otimização D2D1_SHADOW_PROP_OPTIMIZATION |
O nível de otimização de desempenho. O tipo é D2D1_SHADOW_OPTIMIZATION. O valor padrão é D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Modos de otimização
Nome | Descrição |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Aplica otimizações internas, como pré-dimensionamento em raios relativamente pequenos. Usa filtragem linear. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Usa os mesmos limites de otimização que o modo De velocidade, mas usa filtragem trilinear. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Usa apenas otimizações internas com raios de desfoque grandes, em que as aproximações são menos propensas a serem visíveis. Usa a filtragem trilinear. |
Bitmap de saída
O tamanho do bitmap de saída é o tamanho da saída de desfoque. O valor que o crescimento do bitmap de saída em relação ao bitmap original pode ser calculado usando a seguinte equação:
Crescimento de bitmap de saída (X e Y) = BlurStandardDeviation (DIPs (pixels independentes de dispositivo))*6*(DPI do usuário)/96
A saída aumenta igualmente em todas as direções, portanto, se o tamanho aumentar em 10 pixels em cada direção, o canto superior esquerdo do bitmap está localizado em (-5, -5) e o canto inferior direito estará em (105, 105), conforme mostrado no diagrama aqui.
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 |