Compartir a través de


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

Antes
la imagen antes del efecto.
Gráfico de los datos de salida del histograma
la imagen después de la transformación.
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.

ecuación para generar la salida del efecto de histograma.

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

ID2D1Effect