Partager via


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

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

un exemple d’image montrant 2 rectangles arrondis de la même taille qui se chevauchent à l’aide de l’effet composite arithmétique.

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
la première image source avant l’effet.
Avant l’image 2
la deuxième image avant l’effet.
Après
l’image après la transformation.
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

ID2D1Effect