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
- egenskaper för effekt
- Kanalväljare
- Datautdata
- kommentarer
- Krav
- Relaterade ämnen
Exempel
Före |
---|
![]() |
Diagram över histogrammets utdata |
![]() |
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.
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 |