Partager via


Effet de transfert gamma

Utilisez l’effet de transfert gamma pour mapper les intensités de couleur d’une image à l’aide d’une fonction gamma créée à l’aide d’une amplitude, d’un exposant et d’un décalage que vous fournissez pour chaque canal.

Le CLSID de cet effet est CLSID_D2D1GammaTransfer. Pour utiliser cet effet, ajoutez dxguid.lib aux dépendances de l’éditeur de liens.

Exemple d’image

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

gammaTransferEffect->SetInput(0, bitmap);

gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);

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

Cet effet applique une fonction de transfert gamma basée sur l’équation ici.

L’intensité du pixel d’entrée est représentée par C et l’intensité du pixel de sortie comme C'. C'= Amplitude *Exposant C + Décalage

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 de l’effet

Notes

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

  • La valeur d’amplitude n’est pas limitée et est sans unité.
  • La valeur de l’exposant n’est pas limitée et est sans unité.
  • La valeur de décalage n’est pas limitée et est sans unité.
Nom complet et énumération d’index Description
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Amplitude de la fonction de transfert gamma pour le canal rouge. Le type est FLOAT.
La valeur par défaut est 1.0f.
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Exposant de la fonction de transfert gamma pour le canal rouge. Le type est FLOAT.
La valeur par défaut est 1.0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Décalage de la fonction de transfert gamma pour le canal Rouge. Le type est FLOAT.
La valeur par défaut est 0,0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Si vous définissez cette valeur sur TRUE, la fonction de transfert n’est pas appliquée au canal Rouge. Une fonction de transfert d’identité est utilisée. Si vous définissez ce paramètre sur FALSE, il applique la fonction de transfert gamma au canal Rouge. Le type est BOOL.
La valeur par défaut est FALSE.
GreenAmplitude
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
Amplitude de la fonction de transfert gamma pour le canal vert. Le type est FLOAT.
La valeur par défaut est 1.0f.
GreenExponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
Exposant de la fonction de transfert gamma pour le canal vert. Le type est FLOAT.
La valeur par défaut est 1.0f.
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
Décalage de la fonction de transfert gamma pour le canal vert. Le type est FLOAT.
La valeur par défaut est 0,0f.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Si vous définissez cette valeur sur TRUE, la fonction de transfert n’est pas appliquée au canal Vert. Une fonction de transfert d’identité est utilisée. Si vous définissez ce paramètre sur FALSE, il applique la fonction de transfert gamma au canal Vert. Le type est BOOL.
La valeur par défaut est FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Amplitude de la fonction de transfert gamma pour le canal bleu. Le type est FLOAT.
La valeur par défaut est 1.0f.
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Exposant de la fonction de transfert gamma pour le canal bleu. Le type est FLOAT.
La valeur par défaut est 1.0f.
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Décalage de la fonction de transfert gamma pour le canal Bleu. Le type est FLOAT.
La valeur par défaut est 0,0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Si vous définissez ce paramètre sur TRUE, il n’applique pas la fonction de transfert au canal Bleu. Une fonction de transfert d’identité est utilisée. Si vous définissez ce paramètre sur FALSE, il applique la fonction de transfert gamma au canal Bleu. Le type est BOOL.
La valeur par défaut est FALSE.
AlphaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Amplitude de la fonction de transfert gamma pour le canal alpha. Le type est FLOAT.
La valeur par défaut est 1.0f.
AlphaExponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Exposant de la fonction de transfert gamma pour le canal alpha. Le type est FLOAT.
La valeur par défaut est 1.0f.
AlphaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
Décalage de la fonction de transfert gamma pour le canal alpha. Le type est FLOAT.
La valeur par défaut est 0,0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Si vous définissez cette valeur sur TRUE, la fonction de transfert n’est pas appliquée au canal alpha. Une fonction de transfert d’identité est utilisée. Si vous définissez cette valeur sur FALSE, la fonction de transfert gamma est appliquée au canal alpha. Le type est BOOL.
La valeur par défaut est FALSE.
ClampOutput
D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT
Indique si l’effet restreint les valeurs de couleur entre 0 et 1 avant que l’effet ne passe les valeurs à l’effet suivant dans le graphique. L’effet restreint les valeurs avant de prémultiplier l’alpha .
Si vous définissez cette valeur sur TRUE, l’effet restreint les valeurs. Si vous définissez cette valeur sur FALSE, l’effet ne restreint 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.
Le type est BOOL.
La valeur par défaut est FALSE.

Bitmap de sortie

La taille de l’image bitmap de sortie est identique à la taille bitmap d’entrée.

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