Effet de fusion
Utilisez l’effet de fusion pour combiner 2 images. Cet effet a 26 modes de fusion.
Le CLSID pour cet effet est CLSID_D2D1Blend.
- Exemples de fusion
- Propriétés de l’effet
- Modes de fusion
- Conversions d’espace de couleurs TSL
- Image bitmap de sortie
- Exemple de code
- Exigences
- Rubriques connexes
Exemples de fusion
Voici un exemple d’image de chaque mode de fusion de l’effet de fusion. Une liste complète des modes de fusion et des propriétés de mode correspondantes se trouvent dans la section suivante
Voici un autre exemple utilisant le mode d’exclusion.
Avant l’image 1 |
---|
Avant l’image 2 |
Après |
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 de l’effet
Nom complet et énumération d’index | Description |
---|---|
Mode D2D1_BLEND_PROP_MODE |
Mode de fusion 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 affiche 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 : OPRVB = f(FRVB, BRVB) * FA * B A + FRVB * FA * (1 - BA) + BRVB * BA * (1 - FA)
Alpha : OA = FA * (1 - BA) + BA
Où :
- OPRVB est la couleur de sortie prémultipliée
- OA est l’alpha de sortie
- BRVB est la couleur de destination non multipliée
- BA est l’alpha de destination
- FRVB est la couleur source non multipliée
- FA est l’alpha source
- f(SRVB, DRVB) est une fonction de fusion qui varie selon le mode de fusion
Certains modes de fusion nécessitent une conversion vers et depuis la teinte, la saturation, l’espace de couleur de luminosité (TSL) en RVB.
Énumération | Équation |
---|---|
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(FRVB, BRVB) = |
D2D1_BLEND_MODE_LINEAR_BURN | Formules de fusion de base avec f(FRVB, BRVB) = |
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(FRVB, BRVB) = |
D2D1_BLEND_MODE_LINEAR_DODGE | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_LIGHTER_COLOR | Formule de fusion de base pour alpha uniquement. |
D2D1_BLEND_MODE_OVERLAY | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_SOFT_LIGHT | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_HARD_LIGHT | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_VIVID_LIGHT | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_LINEAR_LIGHT | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_PIN_LIGHT | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_HARD_MIX | Formules de fusion de base avec f(FRVB, BRVB) = |
D2D1_BLEND_MODE_DIFFERENCE | Formules de fusion de base avec f(FRVB, BRVB) = abs(FRVB - BRVB) |
D2D1_BLEND_MODE_EXCLUSION | Formules de fusion de base avec f(FRVB, BRVB) = FRVB + BRVB 2 * FRVB * BRVB |
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. |
Remarque
Pour tous les modes de fusion, la valeur de sortie est prémultipliée et limitée à la plage [0, 1].
Conversions d’espace de couleurs TSL
Le composant de 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 RVB
Pour convertir dans l’autre sens, nous utilisons l’inverse des calculs précédents.
Si S = 0, alors R = V = B = L
Sinon, il existe six cas dépendants de 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>V>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 rendent des combinaisons arbitraires de composants TSL à partir de deux couleurs différentes, il est courant que la valeur RVB convertie soit hors gamme, autrement dit, un ou plusieurs composants de canal peuvent être en dehors de la plage autorisée de [0.0, 1.0]. Ces couleurs sont ramenées en gamme de couleurs en réduisant au minimum la saturation, tout en préservant à la fois la teinte et la luminosité :
Image bitmap de sortie
L’image bitmap de sortie pour 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 Direct2D.
Spécifications
Condition requise | Value |
---|---|
Client minimal pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications bureautiques | applications du Windows Store] |
Serveur minimal pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications bureautiques | applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |