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

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.

exemple de capture d’écran de tous les modes de fusion disponibles.

Voici un autre exemple utilisant le mode d’exclusion.

Avant image 1
première image source avant l’effet.
Avant image 2
deuxième image avant l’effet.
After
image après la transformation.
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. mathematical formula for a darken effect.
D2D1_BLEND_MODE_MULTIPLY Formule de fusion de base pour Alpha uniquement. Mathematical formula for a mutiply effect.
D2D1_BLEND_MODE_COLOR_BURN Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a coor burn effect.
D2D1_BLEND_MODE_LINEAR_BURN Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a linear burn effect.
D2D1_BLEND_MODE_DARKER_COLOR Formule de fusion de base pour Alpha uniquement. Mathematical formla for a darken color effect.
D2D1_BLEND_MODE_LIGHTEN Formule de fusion de base pour Alpha uniquement. Mathematical formula for a lighten effect.
D2D1_BLEND_MODE_SCREEN Formule de fusion de base pour Alpha uniquement. Mathematical formula for a screen effect.
D2D1_BLEND_MODE_COLOR_DODGE Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a color dodge effect.
D2D1_BLEND_MODE_LINEAR_DODGE Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a linear dodge effect.
D2D1_BLEND_MODE_LIGHTER_COLOR Formule de fusion de base pour Alpha uniquement. Mathematical formula for a lighter color effect.
D2D1_BLEND_MODE_OVERLAY Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for an overlay effect.
D2D1_BLEND_MODE_SOFT_LIGHT Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a soft light effect.
D2D1_BLEND_MODE_HARD_LIGHT Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a hard light effect.
D2D1_BLEND_MODE_VIVID_LIGHT Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a vivid light effect.
D2D1_BLEND_MODE_LINEAR_LIGHT Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a linear light effect.
D2D1_BLEND_MODE_PIN_LIGHT Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a pin light effect.
D2D1_BLEND_MODE_HARD_MIX Formules de fusion de base avec f(fRGB, BRGB) = Mathematical formula for a hard mix effect.
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. Mathematical formula for a hue blend effect.
D2D1_BLEND_MODE_SATURATION Formule de fusion de base pour Alpha uniquement. Mathematical formula for a sturation blend effect.
D2D1_BLEND_MODE_COLOR Formule de fusion de base pour Alpha uniquement. Mathematical formula for a color blend effect.
D2D1_BLEND_MODE_LUMINOSITY Formule de fusion de base pour Alpha uniquement. Mathematical formula for a luminosity blend effect.
D2D1_BLEND_MODE_DISSOLVE Soit :
  • Une scène en coordonnées XY pour le pixel actuel
  • Un générateur de nombres pseudo-aléatoires déterministe (XY) basé sur la coordonnée de valeur de départ XY, avec une distribution sans biais de valeurs de [0, 1]

Mathematical formula for a dissolve blend effect.
D2D1_BLEND_MODE_SUBTRACT Formule de fusion de base pour Alpha uniquement. Mathematical formula for a subtract blend effect.
D2D1_BLEND_MODE_DIVISION Formule de fusion de base pour Alpha uniquement. Mathematical formula for a division blend effect.

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

formule mathématique décrivant la transformation de la couleur RVB à la couleur 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.

equaiton : étape 1 de six convertissant la couleur TSL en RVB.

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.

mathématiques equaiton étape deux de six convertissant la couleur TSL en RVB.

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.

mathématiques equaiton étape trois de six convertissant la couleur TSL en RVB.

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.

mathématiques equaiton étape quatre de six convertissant la couleur TSL en RVB.

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.

mathématiques equaiton étape 5 de six convertissant la couleur TSL en RVB.

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

mathématiques equaiton étape six de six convertissant la couleur TSL en RVB.

É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é :

formule mathématique décrivant les corrections requises pour les instances de non-gamme.

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

ID2D1Effect