Effet d’ombre
Utilisez l’effet d’ombre pour générer une ombre à partir du canal alpha d’une image. L’ombre est plus opaque pour les valeurs alpha supérieures et plus transparente pour les valeurs alpha inférieures. Vous pouvez définir la quantité de flou et la couleur de l’ombre.
- Exemple d’image
- propriétés Effect
- modes d’optimisation
- bitmap de sortie
- Configuration requise
- rubriques connexes
Le CLSID pour cet effet est CLSID_D2D1Shadow.
Exemple d’image
L’exemple montre ici la sortie de l’effet d’ombre traduit vers le bas et à droite avec l’image source composite sur celle-ci à l’emplacement d’origine. L’effet d’ombre génère uniquement l’ombre.
Avant |
---|
![]() |
Aprè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();
Propriétés d’effet
Nom complet et énumération d’index | Description |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Quantité de flou à appliquer au canal alpha de l’image. Vous pouvez calculer le rayon flou du noyau en multipliant l’écart type par 3. Les unités de l’écart type et du rayon de flou sont des ADRESSES IP. Cette propriété est identique à la propriété Gaussian Blur propriété d’écart type. Le type est FLOAT. La valeur par défaut est 3.0f. |
Couleur D2D1_SHADOW_PROP_COLOR |
Couleur de l’ombre portée. Cette propriété est une D2D1_VECTOR_4F définie comme suit : (R, G, B, A). Vous devez spécifier cette couleur en alpha droit. Le type est D2D1_VECTOR_4F. La valeur par défaut est {0.0f, 0.0f, 0.0f, 1.0f}. |
Optimisation D2D1_SHADOW_PROP_OPTIMIZATION |
Niveau d’optimisation des performances. Le type est D2D1_SHADOW_OPTIMIZATION. La valeur par défaut est D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Modes d’optimisation
Nom | Description |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Applique des optimisations internes telles que la pré-mise à l’échelle à un rayon relativement petit. Utilise le filtrage linéaire. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Utilise les mêmes seuils d’optimisation que le mode Vitesse, mais utilise le filtrage triligne. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Utilise uniquement des optimisations internes avec des rayons flous volumineux, où les approximations sont moins susceptibles d’être visibles. Utilise le filtrage triligne. |
Bitmap de sortie
La taille de la bitmap de sortie est la taille de la sortie floue. La quantité de croissance bitmap de sortie par rapport à la bitmap d’origine peut être calculée à l’aide de l’équation suivante :
Croissance bitmap de sortie (X et Y) = BlurStandardDeviation (pixels indépendants de l’appareil )*6*(Ppp utilisateur)/96
La sortie augmente de manière égale dans toutes les directions. Par exemple, si la taille augmente de 10 pixels dans chaque direction, le coin supérieur gauche de la bitmap est situé à (-5, -5) et que la partie inférieure droite est à (105, 105) comme indiqué dans le diagramme ici.
Exigences
Exigence | Valeur |
---|---|
Client minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |