Histogrammeffekt
Verwenden Sie den Histogrammeffekt, um ein Histogramm für die Eingabe-Bitmap basierend auf der angegebenen Anzahl von Bins zu generieren.
Die CLSID für diesen Effekt ist CLSID_D2D1Histogram.
- Beispiel
- Effekteigenschaften
- Kanalselektoren
- Datenausgabe
- Anmerkungen
- Anforderungen
- Zugehörige Themen
Beispiel
Vorher |
---|
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
Hier ist die Formel zum Generieren der Ausgabe.
i wird von 0 bis zur Anzahl der Behälter 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 bei geraden Bitmappixeln. Die Farbkanäle der Eingabe-Bitmap werden durch den Alphakanal geteilt, um diesen Effekt zu berechnen.
Anzeigename und Indexaufzählung | Typ und Standardwert | BESCHREIBUNG |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Gibt die Anzahl der für das Histogramm verwendeten Bins 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
Enumeration | 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 entspricht. Jedes Element im FLOAT[] ist ein Float. Der Wert des Elements entspricht der Anzahl der Elemente in diesem Bin.
Bemerkungen
Hinweis
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 |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Unterstützte Mindestversion (Server) | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Header | d2d1effects.h |
Bibliothek | d2d1.lib, dxguid.lib |