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 de cet effet est CLSID _ D2D1Shadow.

Exemple d’image

L’exemple ci-dessous montre la sortie de l’effet d’ombre qui est traduite par l’image source composite au niveau de l’emplacement d’origine. L’effet d’ombre génère uniquement l’ombre.

Avant
image avant l’effet.
After
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
_ _ _ Écart type de flou _ _ de l’ombre d2d1
Quantité de flou à appliquer au canal alpha de l’image. Vous pouvez calculer le rayon de flou du noyau en multipliant l’écart type par 3. Les unités de l’écart type et du rayon de flou sont des DIP.
Cette propriété est la même que la propriété d’écart type flou gaussien .
Le type est FLOAT.
La valeur par défaut est 3.0 f.
Couleur
Couleur de l' _ ombre d2d1 _ _
Couleur de l'ombre portée. Cette propriété est un _ vecteur d2d1 _ 4F défini en tant que : (R, G, B, a). Vous devez spécifier cette couleur dans l’alpha simple.
Le type est D2D1 _ Vector _ 4F.
La valeur par défaut est {0.0 f, 0.0 f, 0.0 f, 1.0 f}.
Optimization
Optimisation de la D2D1 des _ clichés instantanés _ _
Niveau d’optimisation des performances.
Le type est D2D1 _ Shadow _ Optimization.
La valeur par défaut est D2D1 l’optimisation de l' _ ombre Shadow _ _ .

Modes d’optimisation

Nom Description
Vitesse d’optimisation de D2D1 _ DIRECTIONALBLUR _ _ Applique des optimisations internes telles que la pré-mise à l’échelle à des rayons relativement petits. Utilise le filtrage linéaire.
D2D1 _ DIRECTIONALBLUR _ Optimization _ Balanced Utilise les mêmes seuils d’optimisation que le mode vitesse, mais utilise le filtrage trilinéaire.
Qualité de l’optimisation de D2D1 _ DIRECTIONALBLUR _ _ Utilise uniquement des optimisations internes avec de grands rayons de flou, où les approximations sont moins susceptibles d’être visibles. Utilise le filtrage trilinéaire.

Bitmap de sortie

La taille de la bitmap de sortie est la taille de la sortie de flou. L’importance de la croissance de la bitmap de sortie par rapport à la bitmap d’origine peut être calculée à l’aide de l’équation suivante :

Croissance des bitmaps en sortie (X et Y) = BlurStandardDeviation (DIP (Device-Independent Pixel)) * 6 * (dpi utilisateur)/96

La sortie augmente uniformément dans tout le sens, par exemple si la taille augmente de 10 pixels dans chaque direction, l’angle supérieur gauche de la bitmap se trouve à (-5,-5) et le coin inférieur droit est (105, 105) comme indiqué dans le diagramme ici.

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

Spécifications

Condition requise Valeur
Client minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
Serveur minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
En-tête d2d1effects. h
Bibliothèque d2d1. lib, dxguid. lib

ID2D1Effect