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 plus élevées 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 d’effet
- Modes d’optimisation
- Bitmap de sortie
- Configuration requise
- Rubriques connexes
Le CLSID de cet effet est CLSID_D2D1Shadow.
Exemple d’image
L’exemple ci-dessous montre la sortie de l’effet d’ombre traduit vers le bas et vers la droite avec l’image source composite à l’emplacement d’origine. L’effet d’ombre génère uniquement l’ombre.
Avant |
---|
After |
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 d’affichage 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 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 DIPs. Cette propriété est identique à la propriété d’écart type Gaussian Blur . Le type est FLOAT. La valeur par défaut est 3.0f. |
Color 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 à 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 triligne. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Utilise uniquement des optimisations internes avec de grands rayons de flou, où les approximations sont moins susceptibles d’être visibles. Utilise le filtrage triligne. |
Bitmap de sortie
La taille de l’image bitmap de sortie correspond à la taille de la sortie de flou. Le montant de la croissance de la bitmap de sortie par rapport à la bitmap d’origine peut être calculé à l’aide de l’équation suivante :
Croissance des bitmaps de sortie (X et Y) = BlurStandardDeviation (pixels indépendants de l’appareil (DIPs))*6*(DPI utilisateur)/96
La sortie augmente également dans toutes les directions. Par exemple, si la taille augmente de 10 pixels dans chaque direction, le coin supérieur gauche de la bitmap se trouve à (-5, -5) et l’angle inférieur droit est à (105, 105), comme illustré dans le diagramme ici.
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimal 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 |