Histogrameffect
Gebruik het histogrameffect om een histogram te genereren voor de invoer bitmap op basis van het opgegeven aantal bins.
De CLSID voor dit effect is CLSID_D2D1Histogram.
- voorbeeld van
- eigenschappen van effect
- Kanaalkiezers
- gegevensuitvoer
- opmerkingen
- vereisten
- Verwante onderwerpen
Voor |
---|
![]() |
Grafiek van de uitvoergegevens van het histogram |
![]() |
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));
Hier volgt de vergelijking om de uitvoer te genereren.
i wordt geëvalueerd van 0 tot het aantal klassen. Het effect genereert een histogram voor pixelwaarden tussen 0 en 1. Waarden buiten dit bereik worden vastgeklemd in het bereik. Het bereik van een bepaalde bucket is afhankelijk van het aantal buckets. Dit effect werkt op rechte bitmap pixels. De kleurkanalen van de invoer bitmap worden gedeeld door het alfakanaal om dit effect te berekenen.
Weergavenaam en indexenumeratie | Type en standaardwaarde | Beschrijving |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Hiermee geeft u het aantal opslaglocaties op dat wordt gebruikt voor het histogram. Het bereik van intensiteitswaarden die in een bepaalde bucket vallen, is afhankelijk van het aantal opgegeven buckets. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
Hiermee geeft u het kanaal op dat wordt gebruikt om het histogram te genereren. Dit effect heeft één gegevensuitvoer die overeenkomt met het opgegeven kanaal. Zie Kanaalkiezers voor meer informatie. |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Alleen uitvoereigenschap. |
De uitvoermatrix. |
Opsomming | Beschrijving |
---|---|
D2D1_CHANNEL_SELECTOR_R | Het effect genereert de histogramuitvoer op basis van het rode kanaal. |
D2D1_CHANNEL_SELECTOR_G | Het effect genereert de histogramuitvoer op basis van het groene kanaal. |
D2D1_CHANNEL_SELECTOR_B | Het effect genereert de histogramuitvoer op basis van het blauwe kanaal. |
D2D1_CHANNEL_SELECTOR_A | Het effect genereert de histogramuitvoer op basis van het alfakanaal. |
Dit effect voert een FLOAT[] uit, met het aantal elementen dat overeenkomt met het aantal opgegeven bins. Elk element in float[] is een float. De waarde van het element komt overeen met het aantal elementen in die bin.
Notitie
De methode CreateEffect mislukt als het apparaat directCompute niet ondersteunt en HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES retourneert. Alle DirectX11-kaarten en DirectX10-kaarten die DirectCompute ondersteunen, kunnen het effect gebruiken.
Eis | Waarde |
---|---|
Minimaal ondersteunde client | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Minimaal ondersteunde server | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Rubriek | d2d1effects.h |
Bibliotheek | d2d1.lib, dxguid.lib |