Hisztogram effektus

A hisztogrameffektussal hisztogramot hozhat létre a bemeneti bitképhez a megadott számú tároló alapján.

Az effektus CLSID azonosítója CLSID_D2D1Histogram.

Példa

Előtt
a képet az effektus előtt.
A hisztogram kimeneti adatainak grafikonja
a képet az átalakítás után.
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));

Effektus tulajdonságai

Az alábbi egyenlettel generálhatja a kimenetet.

az egyenletet a hisztogrameffektus kimenetének létrehozásához.

i kiértékelése 0-ról a dobozok számára történik. Az effektus hisztogramot hoz létre a 0 és 1 közötti képpontértékekhez. A tartományon kívüli értékek a tartományhoz vannak rögzítve. Egy adott gyűjtő tartománya a gyűjtők számától függ. Ez az effektus egyenes bitkép képpontokon működik. A bemeneti bitkép színcsatornái az alfa csatornával vannak elosztva az effektus kiszámításához.

Név és index számbavételének megjelenítése Típus és alapértelmezett érték Leírás
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Megadja a hisztogramhoz használt tárolók számát. Az adott gyűjtőbe eső intenzitásértékek tartománya a megadott gyűjtők számától függ.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Megadja a hisztogram létrehozásához használt csatornát. Ez az effektus egyetlen, a megadott csatornának megfelelő adatkimenettel rendelkezik. További információért lásd csatornaválasztókat.
Hisztogramoutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Csak kimeneti tulajdonság.
A kimeneti tömb.

Csatornaválasztók

Felsorolás Leírás
D2D1_CHANNEL_SELECTOR_R Az effektus a vörös csatorna alapján hozza létre a hisztogram kimenetét.
D2D1_CHANNEL_SELECTOR_G Az effektus a zöld csatorna alapján hozza létre a hisztogram kimenetét.
D2D1_CHANNEL_SELECTOR_B Az effektus a kék csatorna alapján hozza létre a hisztogram kimenetét.
D2D1_CHANNEL_SELECTOR_A Az effektus az alfa csatorna alapján hozza létre a hisztogram kimenetét.

Adatkimenet

Ez az effektus egy FLOAT[] értéket ad ki, a megadott tárolók számának megfelelő elemek számával. A FLOAT[] minden eleme lebegőpontos. Az elem értéke a tárolóban lévő elemek számának felel meg.

Megjegyzések

Jegyzet

A CreateEffect metódus meghiúsul, ha az eszköz nem támogatja a DirectCompute-t, és HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES ad vissza. Az összes DirectX11- és DirectX10-kártya, amely támogatja a DirectCompute-ot, használhatja az effektust.

Követelmények

Követelmény Érték
Minimálisan támogatott ügyfél Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Minimálisan támogatott kiszolgáló Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Fejléc d2d1effects.h
Könyvtár d2d1.lib, dxguid.lib

ID2D1Effect