Partager via


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.

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
l’image avant l’effet.
Après
l’image après la transformation.
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.

diagramme de croissance de la taille de sortie de l’effet d’ombre.

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

ID2D1Effect