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 de cet effet est CLSID_D2D1LinearTransfer.
Exemple d’image
Avant |
---|
After |
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’intercept 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’interceptE Y de la fonction linéaire.
Cet effet fonctionne sur les images alpha droites et prémultipliées. L’effet génère des bitmaps alpha prémultipliées.
Propriétés d’effet
Notes
Pour tous les canaux des propriétés de transfert linéaire :
- L’intercept Y n’est pas limité et est sans unité.
- La pente n’est pas limitée et est sans unité.
Nom d’affichage et énumération d’index | Type et valeur par défaut | Description |
---|---|---|
RedYIntercept D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT |
FLOAT 0.0f |
Intercept Y de la fonction linéaire pour le canal Rouge. |
RedSlope D2D1_LINEARTRANSFER_PROP_RED_SLOPE |
FLOAT 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 Red. |
GreenYIntercept D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT |
FLOAT 0.0f |
InterceptE Y de la fonction linéaire pour le canal Vert. |
GreenSlope D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE |
FLOAT 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, il applique la fonction GreenLinearTransfer au canal Vert. |
BlueYIntercept D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT |
FLOAT 0.0f |
Intercept Y de la fonction linéaire pour le canal Bleu. |
BlueSlope D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE |
FLOAT 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, il applique la fonction BlueLinearTransfer au canal Blue. |
AlphaYIntercept D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT |
FLOAT 0.0f |
InterceptE Y de la fonction linéaire pour le canal Alpha. |
AlphaSlope D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE |
FLOAT 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, il applique la fonction AlphaLinearTransfer au canal Alpha. |
ClampOutput D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT |
BOOL FAUX |
Indique si l’effet fixe les valeurs de couleur entre 0 et 1 avant que l’effet ne passe les valeurs à l’effet suivant dans le graphique. L’effet fixe les valeurs avant de prémultiplier l’alpha . Si vous définissez cette valeur sur TRUE, l’effet va serrer les valeurs. Si vous définissez cette valeur sur FALSE, l’effet ne serrera pas les valeurs de couleur, mais d’autres effets et la surface de sortie peuvent serrer les valeurs si elles ne sont pas suffisamment précises. |
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimal 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 |