Effet d’histogramme
Utilisez l’effet d’histogramme pour générer un histogramme pour la bitmap d’entrée en fonction du nombre spécifié de compartiments.
Le CLSID de cet effet est CLSID_D2D1Histogram.
- Exemple
- Propriétés de l’effet
- Sélecteurs de canal
- Sortie des données
- Remarques
- Configuration requise
- Rubriques connexes
Exemple
Avant |
---|
Graphique des données de sortie de l’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 de l’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 pixel 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 les 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 seule sortie de données 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 une valeur FLOAT[], avec le nombre d’éléments correspondant au nombre de compartiments spécifiés. Chaque élément du FLOAT[] est un float. La valeur de l’élément correspond au nombre d’éléments dans ce bac.
Notes
Notes
La méthode CreateEffect é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.
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 |