Partager via


Effet de transfert discret

Utilisez l’effet de transfert discret pour mapper les intensités de couleur d’une image à l’aide d’une fonction de transfert d’étape créée à partir d’une liste de valeurs que vous fournissez.

Le CLSID pour cet effet est CLSID_D2D1DiscreteTransfer.

Exemple d’image

L’image montre ici l’entrée et la sortie de l’effet de transfert discret.

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

discreteTransferEffect->SetInput(0, bitmap);

float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);

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

La fonction de transfert est basée sur la liste des entrées : V=(V0,V1,V2,V3,V ? ,VN) où N correspond au nombre d’éléments - 1.

L’intensité du pixel d’entrée est représentée en tant que C. L’intensité du pixel de sortie, C est calculé avec l’équation :

Pour une valeur C, choisissez une valeur k, de sorte que :

formule pour le processus.

La sortie C peut être calculée à l’aide de l’équation : C'= V ?

Cet effet fonctionne sur des images alpha droites et prémultipliées. L’effet génère des bitmaps alpha prémultipliées.

Voici à quoi ressemble le graphique de la fonction de transfert discrète si les entrées sont [0.25, 0.5, 0.75, 1.0].

graphique d’intensité de pixels pour la fonction de transfert discrète.

Propriétés d’effet

Note

Les valeurs de tous les canaux des propriétés de transfert discrètes sont sans unité et ont un minimum de 0,0 et un maximum de 1,0.

Nom complet et énumération d’index Type et valeur par défaut Description
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Liste des valeurs utilisées pour définir la fonction de transfert pour le canal Rouge.
RedDisable
D2D1_DISCRETETRANSFER_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 RedDiscreteTransfer au canal Rouge.
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Liste des valeurs qui définissent la fonction de transfert pour le canal Vert.
GreenDisable
D2D1_DISCRETETRANSFER_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, l’effet applique la fonction GreenDiscreteTransfer au canal Vert.
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Liste des valeurs qui définissent la fonction de transfert pour le canal Bleu.
BlueDisable
D2D1_DISCRETETRANSFER_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, l’effet applique la fonction BlueDiscreteTransfer au canal Blue.
AlphaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
Liste des valeurs qui définissent la fonction de transfert pour le canal Alpha.
AlphaDisable
D2D1_DISCRETETRANSFER_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, l’effet applique la fonction AlphaDiscreteTransfer au canal Alpha.
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FAUX
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.

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