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
- propriétés Effect
- Configuration requise
- rubriques connexes
Exemple d’image
Avant |
---|
![]() |
Après |
![]() |
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 |