Effet composite arithmétique
Utilisez l’effet composite arithmétique pour combiner 2 images à l’aide d’une somme pondérée de pixels des images d’entrée.
Le CLSID pour cet effet est CLSID_D2D1ArithmeticComposite.
- formule
- Exemple d’image
- propriétés Effect
- bitmap de sortie
- Configuration requise
- rubriques connexes
Formule
La formule ici est utilisée pour calculer cet effet.
Sortiergba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Où C1, C2, C3, C4 sont des coefficients que vous définissez.
Les coefficients correspondent aux valeurs d’un D2D1_VECTOR_4F (x, y, z, w) :
- x = C1
- y = C2
- z = C3
- w = C4
Exemple d’image
Un exemple simple consiste à ajouter les pixels source et de destination. Dans l’exemple, 2 rectangles arrondis sont composites ensemble. Le rectangle source est bleu et la destination est rouge.
L’image ici est la sortie de l’effet composite arithmétique avec les coefficients de l’équation définie sur les valeurs ici.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Le résultat est que les valeurs de pixels pour la source et la destination sont ajoutées. Les régions où les rectangles ne chevauchent pas les valeurs RVBA sont toutes 0. Où les rectangles chevauchent la couleur est magenta, car les valeurs R et B sont toutes deux au maximum.
Voici un autre exemple d’image avec du code.
Avant l’image 1 |
---|
![]() |
Avant l’image 2 |
![]() |
Après |
![]() |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Propriétés d’effet
Nom complet et énumération d’index | Description |
---|---|
Coefficients D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Coefficients de l’équation utilisés pour compositer les deux images d’entrée. Les coefficients sont unitaires sauf et non liés. Le type est D2D1_VECTOR_4F. La valeur par défaut est {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
L’effet bloque les valeurs de couleur entre 0 et 1 avant que l’effet passe les valeurs à l’effet suivant dans le graphique. Si vous définissez cette valeur sur TRUE, l’effet bloque les valeurs. Si vous définissez cette valeur sur FALSE, l’effet ne serre pas les valeurs de couleur, mais d’autres effets et la surface de sortie peuvent limiter les valeurs si elles ne sont pas suffisamment précises. Type is BOOL. La valeur par défaut est FALSE. |
Bitmap de sortie
La bitmap de sortie dépend des valeurs de coefficient. Il s’agit des tailles bitmap de sortie possibles.
- Si C1 est le seul coefficient non zéro, la taille de sortie est l’intersection des rectangles d’entrée.
- Si C2 est le seul coefficient non nul, la taille de sortie est la taille du rectangle source.
- Si C3 est le seul coefficient non nul, la taille de sortie est la taille du rectangle de destination.
- Si tous les coefficients sont zéro, la taille de sortie est un rectangle vide.
- Pour toutes les autres valeurs de coefficient, la taille de sortie est l’union des rectangles d’entrée.
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 |