Effet histogramme
Utilisez l’effet histogramme pour générer un histogramme pour la bitmap d’entrée en fonction du nombre spécifié de bacs.
Le CLSID pour cet effet est CLSID_D2D1Histogram.
- exemple de
- propriétés Effect
- sélecteurs de canal
- de sortie de données
- Remarques
- Configuration requise
- rubriques connexes
Exemple
Avant |
---|
![]() |
Graphique des données de sortie d’histogramme |
![]() |
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 pour générer la sortie.
i est évalué de 0 au nombre de bacs. L’effet génère un histogramme pour les valeurs de pixels comprises entre 0 et 1. Les valeurs en dehors de cette plage sont limitées à la plage. La plage d’un compartiment particulier dépend du nombre de compartiments. Cet effet fonctionne sur des pixels 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_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Spécifie le nombre de bacs utilisés pour l’histogramme. La plage de valeurs d’intensité qui tombent dans un compartiment particulier dépend du nombre de compartiments spécifiés. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_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 canal. |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Propriété de sortie uniquement. |
Tableau de sortie. |
Sélecteurs de canal
Énumération | Description |
---|---|
D2D1_CHANNEL_SELECTOR_R | L’effet génère la sortie de l’histogramme en fonction du canal rouge. |
D2D1_CHANNEL_SELECTOR_G | L’effet génère la sortie de l’histogramme en fonction du canal vert. |
D2D1_CHANNEL_SELECTOR_B | L’effet génère la sortie de l’histogramme en fonction du canal bleu. |
D2D1_CHANNEL_SELECTOR_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 un FLOAT[], avec le nombre d’éléments correspondant au nombre de bacs spécifiés. Chaque élément du float[] est un float. La valeur de l’élément correspond au nombre d’éléments de ce bac.
Remarques
Note
La méthodeCreateEffectéchoue si l’appareil ne prend pas en charge DirectCompute et retourne HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Toutes les cartes DirectX11 et DirectX10 qui prennent en charge DirectCompute peuvent utiliser l’effet.
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 |