Dela via


Histogrameffekt

Använd histogrameffekten för att generera ett histogram för indatabitmappen baserat på det angivna antalet lagerplatser.

CLSID för den här effekten är CLSID_D2D1Histogram.

Exempel

Före
bilden före effekten.
Diagram över histogrammets utdata
bilden efter transformen.
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));

Effektegenskaper

Här är ekvationen för att generera utdata.

ekvationen för att generera resultatet av histogrameffekten.

i utvärderas från 0 till antalet lagerplatser. Effekten genererar ett histogram för pixelvärden mellan 0 och 1. Värden utanför det här intervallet är fastklämda i intervallet. Intervallet för en viss bucket beror på antalet bucketar. Den här effekten fungerar på raka bitmappspixlar. Färgkanalerna för indatabitmappen divideras med alfakanalen för att beräkna den här effekten.

Visningsnamn och indexuppräkning Typ- och standardvärde Beskrivning
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Anger antalet lagerplatser som används för histogrammet. Det intervall med intensitetsvärden som hamnar i en viss bucket beror på antalet angivna bucketar.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Anger den kanal som används för att generera histogrammet. Den här effekten har ett enda datautdata som motsvarar den angivna kanalen. Mer information finns i kanalväljare.
HistogramUtflöde
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Endast utdataegenskap.
Utdatamatrisen.

Kanalväljare

Uppräkning Beskrivning
D2D1_CHANNEL_SELECTOR_R Effekten genererar histogramutdata baserat på den röda kanalen.
D2D1_CHANNEL_SELECTOR_G Effekten genererar histogramutdata baserat på den gröna kanalen.
D2D1_CHANNEL_SELECTOR_B Effekten genererar histogramutdata baserat på den blå kanalen.
D2D1_CHANNEL_SELECTOR_A Effekten genererar histogrammets utdata baserat på alfakanalen.

Datautdata

Den här effekten matar ut en FLOAT[], med antalet element som motsvarar antalet angivna lagerplatser. Varje element i FLOAT[] är en float. Värdet för elementet motsvarar antalet element i den lagerplatsen.

Anmärkningar

Not

Metoden CreateEffect misslyckas om enheten inte stöder DirectCompute och returnerar HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Alla DirectX11-kort och DirectX10-kort som stöder DirectCompute kan använda effekten.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect