Freigeben über


Histogrammeffekt

Verwenden Sie den Histogrammeffekt, um ein Histogramm für die Eingabebitmap basierend auf der angegebenen Anzahl von Bins zu generieren.

Die CLSID für diesen Effekt ist CLSID_D2D1Histogram.

Beispiel

Vor
das Bild vor dem Effekt.
Diagramm der Histogrammausgabedaten
das Bild nach der Transformation.
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));

Effekteigenschaften

Dies ist die Formel zum Generieren der Ausgabe.

die Formel, um die Ausgabe des Histogrammeffekts zu generieren.

i wird von 0 bis zur Anzahl der Bins ausgewertet. Der Effekt generiert ein Histogramm für Pixelwerte zwischen 0 und 1. Werte außerhalb dieses Bereichs werden an den Bereich geklemmt. Der Bereich eines bestimmten Buckets hängt von der Anzahl der Buckets ab. Dieser Effekt funktioniert auf geraden Bitmappixeln. Die Farbkanäle der Eingabebitmap werden durch den Alphakanal geteilt, um diesen Effekt zu berechnen.

Anzeigename und Indexenumeration Typ und Standardwert Beschreibung
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Gibt die Anzahl der für das Histogramm verwendeten Container an. Der Bereich der Intensitätswerte, die in einen bestimmten Bucket fallen, hängt von der Anzahl der angegebenen Buckets ab.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Gibt den Kanal an, der zum Generieren des Histogramms verwendet wird. Dieser Effekt hat eine einzelne Datenausgabe, die dem angegebenen Kanal entspricht. Weitere Informationen finden Sie unter Kanalselektoren.
HistogrammOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Nur Ausgabeeigenschaft.
Das Ausgabearray.

Kanalselektoren

Aufzählung Beschreibung
D2D1_CHANNEL_SELECTOR_R Der Effekt generiert die Histogrammausgabe basierend auf dem roten Kanal.
D2D1_CHANNEL_SELECTOR_G Der Effekt generiert die Histogrammausgabe basierend auf dem grünen Kanal.
D2D1_CHANNEL_SELECTOR_B Der Effekt generiert die Histogrammausgabe basierend auf dem blauen Kanal.
D2D1_CHANNEL_SELECTOR_A Der Effekt generiert die Histogrammausgabe basierend auf dem Alphakanal.

Datenausgabe

Dieser Effekt gibt eine FLOAT[] mit der Anzahl der Elemente aus, die der Anzahl der angegebenen Bins entsprechen. Jedes Element in der FLOAT[] ist ein Float-Element. Der Wert des Elements entspricht der Anzahl der Elemente in diesem Container.

Bemerkungen

Anmerkung

Die CreateEffect--Methode schlägt fehl, wenn das Gerät DirectCompute nicht unterstützt und HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES zurückgibt. Alle DirectX11-Karten und DirectX10-Karten, die DirectCompute unterstützen, können den Effekt verwenden.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Mindestens unterstützter Server Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Kopfball d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect-