Efeito de sombra
Use o efeito de sombra para gerar uma sombra a partir do canal alfa de uma imagem. A sombra é mais opaca para valores alfa mais elevados 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
- Requisitos
- Tópicos relacionados
O CLSID para este efeito é CLSID_D2D1Shadow.
Imagem de exemplo
O exemplo aqui mostra a saída do efeito de sombra traduzido para baixo e para a direita com a imagem de origem composta sobre ela no local original. O efeito de sombra apenas produz a sombra.
Antes |
---|
![]() |
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 do efeito
Nome para 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. Esta propriedade é a mesma que a propriedade Gaussian Blur desvio padrão. O tipo é FLOAT. O valor padrão é 3.0f. |
Cor D2D1_SHADOW_PROP_COLOR |
A cor da sombra. Esta propriedade é um D2D1_VETOR_4F definido como: (R, G, B, A). Você deve especificar essa cor em alfa reto. O tipo é D2D1_VETOR_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
Designação | Descrição |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Aplica otimizações internas, como pré-dimensionamento em raios relativamente pequenos. Utiliza filtragem linear. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Usa os mesmos limites de otimização do modo Velocidade, mas usa filtragem trilinear. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Usa apenas otimizações internas com grandes raios de desfoque, onde as aproximações são menos prováveis de serem visíveis. Utiliza filtragem trilinear. |
Bitmap de saída
O tamanho do bitmap de saída é o tamanho da saída de desfoque. A quantidade de crescimento do bitmap de saída em relação ao bitmap original pode ser calculada usando a seguinte equação:
Crescimento de bitmap de saída (X e Y) = BlurStandardDeviation (pixels independentes do dispositivo (DIPs))*6*(DPI do usuário)/96
A saída aumenta igualmente em todas as direções, por exemplo, se o tamanho aumenta 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), como mostrado no diagrama aqui.
Requerimentos
Exigência | Valor |
---|---|
Cliente mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Servidor mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |