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
- Effekteigenschaften
- Kanalselektoren
- Datenausgabe-
- Anmerkungen
- Anforderungen
- Verwandte Themen
Beispiel
Vor |
---|
![]() |
Diagramm der Histogrammausgabedaten |
![]() |
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.
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 |