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 de cet effet est CLSID_D2D1LinearTransfer.

Exemple d’image

Avant
image avant l’effet.
After
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’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

ID2D1Effect