Effet d’histogramme

Utilisez l’effet histogramme pour générer un histogramme pour l’image bitmap d’entrée en fonction du nombre spécifié d’emplacements.

Le CLSID de cet effet est CLSID _ D2D1Histogram.

Exemple

Avant
image avant l’effet.
Graph des données de sortie de l’histogramme
image après la transformation.
ComPtr<ID2D1Effect> histogramEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Histogram, &histogramEffect);

histogramEffect->SetInputEffect(0, m_2DAffineTransformEffectRight.Get());
histogramEffect->SetValue(D2D1_HISTOGRAM_PROP_CHANNEL_SELECT, D2D1_CHANNEL_SELECTOR_G);

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

// The histogram data is only available once the effect has been 'drawn'.
int histogramBinCount;

HRESULT hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_NUM_BINS, &histogramBinCount);

float *histogramData = new float[histogramBinCount];
hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT, 
                               reinterpret_cast<BYTE*>(histogramData), 
                               histogramBinCount * sizeof(float));

Propriétés d’effet

Voici l’équation permettant de générer la sortie.

équation permettant de générer la sortie de l’effet de l’histogramme.

la valeur de i est comprise entre 0 et le nombre d’emplacements. L’effet génère un histogramme pour les valeurs de pixel comprises entre 0 et 1. Les valeurs en dehors de cette plage sont ancrées à la plage. La plage d’un compartiment particulier dépend du nombre de compartiments. Cet effet fonctionne sur des pixels de bitmap droits. Les canaux de couleur de la bitmap d’entrée sont divisés par le canal alpha pour calculer cet effet.

Nom complet et énumération d’index Type et valeur par défaut Description
NumBins
D2D1 de l' _ histogramme _ prop _ nombre d' _ emplacements
UINT32
256
Spécifie le nombre d’emplacements utilisés pour l’histogramme. La plage de valeurs d’intensité qui se trouvent dans un compartiment particulier dépend du nombre de compartiments spécifiés.
ChannelSelect
_Sélection du _ _ canal _ d2d1 de l’histogramme
_Sélecteur de canal d2d1 _
_Sélecteur de canal d2d1 _ _ R
Spécifie le canal utilisé pour générer l’histogramme. Cet effet a une sortie de données unique correspondant au canal spécifié. Pour plus d’informations, consultez sélecteurs de canaux .
HistogramOutput
Sortie de l’histogramme D2D1 de l' _ histogramme _ _ _
DISSOCIÉ[]
Propriété de sortie uniquement.
Tableau de sortie.

Sélecteurs de canaux

Énumération Description
_Sélecteur de canal d2d1 _ _ R L’effet génère la sortie de l’histogramme en fonction du canal rouge.
_Sélecteur de canal d2d1 _ _ G L’effet génère la sortie de l’histogramme en fonction du canal vert.
_Sélecteur de canal d2d1 _ _ B L’effet génère la sortie de l’histogramme en fonction du canal bleu.
_ _ Sélecteur de canal d2d1 _ A L’effet génère la sortie de l’histogramme en fonction du canal alpha.

Sortie des données

Cet effet génère une valeur FLOAT [ ] , avec le nombre d’éléments correspondant au nombre d’emplacements spécifiés. Chaque élément de la [ ] valeur float est un float. La valeur de l’élément correspond au nombre d’éléments dans cet emplacement.

Notes

Notes

La méthode CreateEffect échoue si l’appareil ne prend pas en charge DirectCompute et retourne HRESULT = D2DERR _ fonctionnalités d’appareil insuffisantes _ _ . Toutes les cartes DirectX11 et DirectX10 qui prennent en charge DirectCompute peuvent utiliser l’effet.

Spécifications

Condition requise Valeur
Client minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
Serveur minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
En-tête d2d1effects. h
Bibliothèque d2d1. lib, dxguid. lib

ID2D1Effect