Efecto de 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 intervalos.
El CLSID de este efecto es CLSID_D2D1Histogram.
- de ejemplo de
- propiedades Effect
- selectores de canal de
- de salida de datos de
- comentarios
- requisitos de
- 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 cubos. El efecto genera un histograma para los valores de píxeles 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 valor float. El valor del elemento corresponde al número de elementos de ese intervalo.
Observaciones
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 DirectX10 que admiten DirectCompute pueden usar el efecto.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |