Effetto istogramma
Usare l'effetto istogramma per generare un istogramma per la bitmap di input in base al numero specificato di bin.
Il CLSID per questo effetto è CLSID_D2D1Histogram.
- Esempio
- Proprietà dell'effetto
- Selettori di canale
- Output dei dati
- Osservazioni:
- Requisiti
- Argomenti correlati
Esempio
Prima |
---|
Grafico dei dati di output dell'istogramma |
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));
Proprietà dell'effetto
Ecco l'equazione per generare l'output.
i viene valutato da 0 al numero di bin. L'effetto genera un istogramma per i valori di pixel compresi tra 0 e 1. I valori al di fuori di questo intervallo sono bloccati all'intervallo. L'intervallo di un bucket specifico dipende dal numero di bucket. Questo effetto funziona sui pixel bitmap dritti. I canali di colore della bitmap di input sono divisi per il canale alfa per calcolare questo effetto.
Enumerazione nome visualizzato e indice | Tipo e valore predefinito | Descrizione |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Specifica il numero di bin utilizzati per l'istogramma. L'intervallo di valori di intensità che rientrano in un bucket specifico dipende dal numero di bucket specificati. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
Specifica il canale utilizzato per generare l'istogramma. Questo effetto ha un singolo output di dati corrispondente al canale specificato. Per altre informazioni, vedi Selettori di canale . |
IstogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Solo proprietà di output. |
Matrice di output. |
Selettori di canale
Enumerazione | Descrizione |
---|---|
D2D1_CHANNEL_SELECTOR_R | L'effetto genera l'output dell'istogramma in base al canale rosso. |
D2D1_CHANNEL_SELECTOR_G | L'effetto genera l'output dell'istogramma in base al canale verde. |
D2D1_CHANNEL_SELECTOR_B | L'effetto genera l'output dell'istogramma in base al canale blu. |
D2D1_CHANNEL_SELECTOR_A | L'effetto genera l'output dell'istogramma in base al canale alfa. |
Output dei dati
Questo effetto restituisce float[], con il numero di elementi corrispondenti al numero di bin specificati. Ogni elemento in FLOAT[] è un float. Il valore dell'elemento corrisponde al numero di elementi nel bin.
Commenti
Nota
Il metodo CreateEffect ha esito negativo se il dispositivo non supporta DirectCompute e restituisce HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Tutte le schede DirectX11 e DirectX10 che supportano DirectCompute possono usare l'effetto.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Libreria | d2d1.lib, dxguid.lib |