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 pour cet effet est CLSID_D2D1GammaTransfer. Pour utiliser cet effet, ajoutez dxguid.lib aux dépendances de l’éditeur de liens.

Exemple d’image

Avant
l’image avant l’effet.
Après
l’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 en C et l’intensité du pixel de sortie en C'. C'= Amplitude * Exposant C + Décalage

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 gamma :

  • La valeur d’amplitude n’est pas limitée et est sans unité.
  • La valeur d’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, elle n’applique pas la fonction de transfert au canal Rouge. Une fonction de transfert d’identité est utilisée. Si vous définissez cette valeur sur FALSE, elle 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, elle n’applique pas la fonction de transfert au canal Vert. Une fonction de transfert d’identité est utilisée. Si vous définissez cette valeur sur FALSE, elle 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 cette valeur sur TRUE, elle n’applique pas la fonction de transfert au canal Bleu. Une fonction de transfert d’identité est utilisée. Si vous définissez cette valeur sur FALSE, elle 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, elle n’applique pas la fonction de transfert au canal alpha. Une fonction de transfert d’identité est utilisée. Si vous définissez cette valeur sur FALSE, elle applique la fonction de transfert gamma 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 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.
Le type est BOOL.
La valeur par défaut est FALSE.

Bitmap de sortie

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

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