Partager via


Effet de transfert linéaire

Utilisez l’effet de transfert linéaire pour mapper les intensités de couleur d’une image à l’aide d’une fonction linéaire créée à partir d’une liste de valeurs que vous fournissez pour chaque canal.

Le CLSID pour cet effet est CLSID_D2D1LinearTransfer.

Exemple d’image

Avant
l’image avant l’effet.
Après
l’image après la transformation.
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);

linearTransferEffect->SetInput(0, bitmap);

linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(linearTransferEffect.Get());
m_d2dContext->EndDraw();

La fonction de transfert linéaire est créée en fonction de la pente et de l’interception y pour chaque canal que vous spécifiez. L’intensité du pixel de sortie C est calculée avec l’équation : C'= mC + B, où m est la pente de la fonction linéaire et B est l’intercept Y de la fonction linéaire.

Cet effet fonctionne sur des images alpha droites et prémultipliées. L’effet génère des bitmaps alpha prémultipliées.

Propriétés d’effet

Note

Pour tous les canaux des propriétés de transfert linéaire :

  • L’interception Y n’est pas limitée et est sans unité.
  • La pente n’est pas limitée et est sans unité.
Nom complet et énumération d’index Type et valeur par défaut Description
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
FLOTTER
0.0f
Intercept Y de la fonction linéaire pour le canal Rouge.
RedSlope
D2D1_LINEARTRANSFER_PROP_RED_SLOPE
FLOTTER
1.0f
Pente de la fonction linéaire pour le canal Rouge.
RedDisable
D2D1_LINEARTRANSFER_PROP_RED_DISABLE
BOOL
FAUX
Si vous définissez cette valeur sur TRUE, l’effet n’applique pas la fonction de transfert au canal Rouge. Si vous définissez cette valeur sur FALSE, l’effet applique la fonction RedLinearTransfer au canal Rouge.
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
FLOTTER
0.0f
Interception Y de la fonction linéaire pour le canal Vert.
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
FLOTTER
1.0f
Pente de la fonction linéaire pour le canal vert.
GreenDisable
D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE
BOOL
FAUX
Si vous définissez cette valeur sur TRUE, l’effet n’applique pas la fonction de transfert au canal Vert. Si vous définissez cette valeur sur FALSE, elle applique la fonction GreenLinearTransfer au canal Vert.
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
FLOTTER
0.0f
Interception Y de la fonction linéaire pour le canal Bleu.
BlueSlope
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE
FLOTTER
1.0f
Pente de la fonction linéaire pour le canal Bleu.
BlueDisable
D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE
BOOL
FAUX
Si vous définissez cette valeur sur TRUE, l’effet n’applique pas la fonction de transfert au canal Bleu. Si vous définissez cette valeur sur FALSE, elle applique la fonction BlueLinearTransfer au canal Blue.
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT
FLOTTER
0.0f
Intercept Y de la fonction linéaire pour le canal Alpha.
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
FLOTTER
0.0f
Pente de la fonction linéaire pour le canal Alpha.
AlphaDisable
D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE
BOOL
FAUX
Si vous définissez cette valeur sur TRUE, l’effet n’applique pas la fonction de transfert au canal Alpha. Si vous définissez cette valeur sur FALSE, elle applique la fonction AlphaLinearTransfer au canal Alpha.
ClampOutput
D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT
BOOL
FAUX
Indique si l’effet restreint les valeurs de couleur entre 0 et 1 avant que l’effet passe les valeurs à l’effet suivant dans le graphique. L’effet bloque les valeurs avant de prémultiplier l’alpha.
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.

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