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
- właściwości Efekt
- selektory kanału
- dane wyjściowe danych wyjściowych
- uwagi
- wymagania dotyczące
- Tematy pokrewne
Przykład
Przed |
---|
![]() |
Wykres danych wyjściowych 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));
Właściwości efektu
Oto równanie do wygenerowania danych wyjściowych.
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 |