Efekt histogramu
Pomocí efektu histogramu vygenerujte histogram vstupního rastrového obrázku na základě zadaného počtu intervalů.
CLSID pro tento efekt je CLSID_D2D1Histogram.
- příklad
- vlastnosti efektu
- selektory kanálu
- výstup dat
- poznámky
- požadavky na
- související témata
Příklad
Před |
---|
![]() |
Graf výstupních dat histogramu |
![]() |
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));
Vlastnosti efektu
Tady je rovnice pro vygenerování výstupu.
i se vyhodnotí z 0 na počet intervalů. Efekt vygeneruje histogram pro hodnoty pixelů v rozmezí od 0 do 1. Hodnoty mimo tento rozsah jsou uchycené na rozsah. Rozsah konkrétního kontejneru závisí na počtu kbelíků. Tento efekt funguje na rovných rastrových pixelech. Barevné kanály vstupního rastrového obrázku jsou rozděleny alfa kanálem pro výpočet tohoto efektu.
Zobrazovaný název a výčet indexu | Typ a výchozí hodnota | Popis |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Určuje počet intervalů použitých pro histogram. Rozsah hodnot intenzity, které spadají do konkrétního kontejneru, závisí na počtu zadaných kontejnerů. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
Určuje kanál použitý k vygenerování histogramu. Tento efekt má jeden datový výstup odpovídající zadanému kanálu. Další informace najdete v tématu selektory kanálu. |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Pouze výstupní vlastnost. |
Výstupní pole. |
Selektory kanálů
Výčet | Popis |
---|---|
D2D1_CHANNEL_SELECTOR_R | Efekt vygeneruje výstup histogramu na základě červeného kanálu. |
D2D1_CHANNEL_SELECTOR_G | Efekt vygeneruje výstup histogramu na základě zeleného kanálu. |
D2D1_CHANNEL_SELECTOR_B | Efekt vygeneruje výstup histogramu na základě modrého kanálu. |
D2D1_CHANNEL_SELECTOR_A | Efekt vygeneruje výstup histogramu na základě alfa kanálu. |
Výstup dat
Tento efekt vypíše hodnotu FLOAT[] s počtem prvků odpovídajících počtu zadaných intervalů. Každý prvek v float[] je float. Hodnota prvku odpovídá počtu prvků v daném intervalu.
Poznámky
Poznámka
Metoda CreateEffect selže, pokud zařízení nepodporuje DirectCompute a vrátí hodnotu HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Efekt můžou použít všechny karty DirectX11 a karty DirectX10, které podporují DirectCompute.
Požadavky
Požadavek | Hodnota |
---|---|
Minimální podporovaný klient | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Minimální podporovaný server | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Záhlaví | d2d1effects.h |
Knihovna | d2d1.lib, dxguid.lib |