Udostępnij za pośrednictwem


Efekt histogramu

Użyj efektu histogramu, aby wygenerować histogram dla mapy bitowej wejściowej na podstawie określonej liczby pojemników.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1Histogram.

Przykład

Przed
obraz przed efektem.
Wykres danych wyjściowych histogramu
obraz po przekształceniu.
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));

Właściwości efektu

Oto równanie do wygenerowania danych wyjściowych.

równanie w celu wygenerowania danych wyjściowych efektu histogramu.

i jest obliczana z zakresu od 0 do liczby pojemników. Efekt generuje histogram dla wartości pikseli z zakresu od 0 do 1. Wartości poza tym zakresem są zaciśnięte do zakresu. Zakres określonego zasobnika zależy od liczby zasobników. Ten efekt działa na prostych pikselach mapy bitowej. Kanały kolorów mapy bitowej wejściowej są podzielone przez kanał alfa w celu obliczenia tego efektu.

Nazwa wyświetlana i wyliczenie indeksu Typ i wartość domyślna Opis
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Określa liczbę pojemników używanych dla histogramu. Zakres wartości intensywności, które należą do określonego zasobnika, zależy od liczby określonych zasobników.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Określa kanał używany do generowania histogramu. Ten efekt ma pojedyncze dane wyjściowe odpowiadające określonemu kanałowi. Aby uzyskać więcej informacji, zobacz Selektory kanałów.
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Tylko właściwość wyjściowa.
Tablica wyjściowa.

Selektory kanałów

Wyliczenie Opis
D2D1_CHANNEL_SELECTOR_R Efekt generuje dane wyjściowe histogramu na podstawie czerwonego kanału.
D2D1_CHANNEL_SELECTOR_G Efekt generuje dane wyjściowe histogramu na podstawie zielonego kanału.
D2D1_CHANNEL_SELECTOR_B Efekt generuje dane wyjściowe histogramu na podstawie niebieskiego kanału.
D2D1_CHANNEL_SELECTOR_A Efekt generuje dane wyjściowe histogramu na podstawie kanału alfa.

Dane wyjściowe danych

Ten efekt generuje zmiennoprzecinkowy[], z liczbą elementów odpowiadających liczbie określonych pojemników. Każdy element w obiekcie FLOAT[] jest zmiennoprzecinkowym. Wartość elementu odpowiada liczbie elementów w tym pojemniku.

Uwagi

Nuta

Metoda CreateEffect kończy się niepowodzeniem, jeśli urządzenie nie obsługuje funkcji DirectCompute i zwraca wartość HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Wszystkie karty DirectX11 i karty DirectX10, które obsługują directCompute, mogą używać efektu.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib

ID2D1Effect