Effet de fusion :
Utilisez l’effet de fusion pour combiner 2 images. Cet effet a 26 modes de fusion.
Le CLSID de cet effet est CLSID _ D2D1Blend.
- Exemples de fusion
- Propriétés d’effet
- Modes de fusion
- Conversions de l’espace colorimétrique TSL
- Bitmap de sortie
- Exemple de code
- Configuration requise
- Rubriques connexes
Exemples de fusion
Voici un exemple d’image de chaque mode de fusion de l’effet de fusion. La section suivante présente une liste complète des modes de fusion et des propriétés de mode correspondantes.

Voici un autre exemple utilisant le mode d’exclusion.
| Avant image 1 |
|---|
![]() |
| Avant image 2 |
![]() |
| After |
![]() |
ComPtr<ID2D1Effect> blendEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Blend, &blendEffect);
blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(blendEffect.Get());
m_d2dContext->EndDraw();
Propriétés d’effet
| Nom complet et énumération d’index | Description |
|---|---|
| Mode _Mode d2d1 Blend _ prop _ |
Mode de fondu utilisé pour l’effet. Pour plus d’informations, consultez modes de fusion . Le type est D2D1 _ Blend _ mode. La valeur par défaut est D2D1 _ Blend _ mode _ Multiply. |
Modes de fusion
Le tableau ci-dessous montre tous les modes de fusion de cet effet. Les fonctions d’assistance nécessaires pour calculer la sortie de l’effet se trouvent dans la section suivante.
Couleur : O PRGB = f(f RGB, b RGB) * f a * B + f RGB * f a * (1-B a) + B RGB * b a * (1-f a)
Alpha : Oa = Fa * (1-Ba) + Ba
Où :
- OPRGB est la couleur de sortie prémultipliée
- Oa est une sortie alpha
- BRVB est la couleur de destination non prémultipliée
- Ba est une destination alpha
- FRGB est la couleur source non prémultipliée
- Fa est une source alpha
- f(S RGB, D RGB) est une fonction de fusion qui varie en mode par fusion
Certains modes de fusion nécessitent une conversion vers et à partir de l’espace de couleurs teinte, saturation, luminosité (TSL) sur RVB.
| Énumération | Sommaire |
|---|---|
| D2D1_BLEND_MODE_DARKEN | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_MULTIPLY | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_COLOR_BURN | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_LINEAR_BURN | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_DARKER_COLOR | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_LIGHTEN | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_SCREEN | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_COLOR_DODGE | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_LINEAR_DODGE | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_LIGHTER_COLOR | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_OVERLAY | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_SOFT_LIGHT | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_HARD_LIGHT | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_VIVID_LIGHT | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_LINEAR_LIGHT | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_PIN_LIGHT | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_HARD_MIX | Formules de fusion de base avec f(fRGB, BRGB) = ![]() |
| D2D1_BLEND_MODE_DIFFERENCE | Formules de fusion de base avec f(fRGB, BRGB) = ABS (fRGB -bRGB) |
| D2D1_BLEND_MODE_EXCLUSION | Formules de fusion de base avec f(fRGB, BRGB)= F RGB + bRGB 2 * f RVB * bRGB |
| D2D1_BLEND_MODE_HUE | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_SATURATION | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_COLOR | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_LUMINOSITY | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_DISSOLVE | Soit :
![]() |
| D2D1_BLEND_MODE_SUBTRACT | Formule de fusion de base pour Alpha uniquement. ![]() |
| D2D1_BLEND_MODE_DIVISION | Formule de fusion de base pour Alpha uniquement. ![]() |
Notes
Pour tous les modes de fusion, la valeur de sortie est prémultipliée et ancrée à la plage [ 0, 1 ] .
Conversions de l’espace colorimétrique TSL
Le composant luminosité est calculé à l’aide des pondérations RVB ici :
- kR = 0,30
- kG = 0,59
- kB = 0,11
Conversion de RVB en TSL

Cela place S et L dans la plage [ 0,0, 1,0 ] et H dans la plage [ -1,0, 5,0 ] .
Conversion de TSL en RGB
Pour convertir d’une autre façon, nous utilisons l’inverse des calculs précédents.
Si S = 0, alors R = G = B = L
Dans le cas contraire, il existe six cas dépendants de la teinte :
Si H est supérieur à 0, les valeurs se trouvent dans le secteur rouge/Magenta où R > B > G.

Si H est supérieur ou égal à 0 et inférieur à 1, les valeurs se trouvent dans le secteur rouge/jaune où R > G > B.

Si H est supérieur ou égal à 1 et inférieur à 2, les valeurs se trouvent dans le secteur jaune/vert où G > R > B.

Si H est supérieur ou égal à 2 et inférieur à 3, les valeurs se trouvent dans le secteur vert/cyan où G > B > R.

Si H est supérieur ou égal à 3 et inférieur à 4, les valeurs se trouvent dans le secteur cyan/bleu, où B > G > R.

Si H est supérieur ou égal à 4, les valeurs se trouvent dans le secteur bleu/magenta où B > R > G.

Étant donné que les modes de fusion apportent des combinaisons arbitraires de composants TSL à partir de deux couleurs différentes, il est courant que la valeur RVB convertie soit hors de la gamme, c’est-à-dire qu’un ou plusieurs composants de canal soient en dehors de la plage légale [ 0,0, 1,0 ] . Ces couleurs sont remises en gamme en réduisant au minimum la saturation, tout en préservant la teinte et la luminosité :

Bitmap de sortie
Le bitmap de sortie de cet effet est toujours la taille de l’Union des deux images d’entrée.
Exemple de code
Pour obtenir un exemple de cet effet, téléchargez l' exemple de modes d’effet composite de Direct2D.
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 |


























