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 |
---|
After |
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 |