Efecto histograma
Use el efecto de histograma para generar un histograma para el mapa de bits de entrada en función del número especificado de contenedores.
El CLSID de este efecto es CLSID_D2D1Histogram.
- Ejemplo
- Propiedades de efecto
- Selectores de canales
- Salida de datos
- Comentarios:
- Requisitos
- Temas relacionados
Ejemplo
Antes |
---|
Gráfico de los datos de salida del histograma |
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));
Propiedades de efecto
Esta es la ecuación para generar la salida.
i se evalúa de 0 al número de contenedores. El efecto genera un histograma para los valores de píxel entre 0 y 1. Los valores fuera de este intervalo se fijan en el intervalo. El intervalo de un cubo determinado depende del número de cubos. Este efecto funciona en píxeles de mapa de bits rectos. Los canales de color del mapa de bits de entrada se dividen por el canal alfa para calcular este efecto.
Enumeración de índice y nombre para mostrar | Tipo y valor predeterminado | Descripción |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Especifica el número de cubos usados para el histograma. El intervalo de valores de intensidad que se encuentran en un cubo determinado depende del número de cubos especificados. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
Especifica el canal usado para generar el histograma. Este efecto tiene una salida de datos única correspondiente al canal especificado. Consulta Selectores de canales para obtener más información. |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Solo propiedad de salida. |
Matriz de salida. |
Selectores de canales
Enumeración | Descripción |
---|---|
D2D1_CHANNEL_SELECTOR_R | El efecto genera la salida del histograma en función del canal rojo. |
D2D1_CHANNEL_SELECTOR_G | El efecto genera la salida del histograma en función del canal verde. |
D2D1_CHANNEL_SELECTOR_B | El efecto genera la salida del histograma en función del canal azul. |
D2D1_CHANNEL_SELECTOR_A | El efecto genera la salida del histograma en función del canal alfa. |
Salida de datos
Este efecto genera un float[], con el número de elementos correspondientes al número de contenedores especificados. Cada elemento de FLOAT[] es un elemento float. El valor del elemento corresponde al número de elementos de esa bin.
Comentarios
Nota
Se produce un error en el método CreateEffect si el dispositivo no admite DirectCompute y devuelve HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Todas las tarjetas DirectX11 y Las tarjetas DirectX10 que admiten DirectCompute pueden usar el efecto.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 y Actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo compatible | Windows 8 y Actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |