Efeito histograma
Use o efeito histograma para gerar um histograma para o bitmap de entrada com base no número especificado de compartimentos.
O CLSID para esse efeito é CLSID_D2D1Histogram.
- Exemplo
- Propriedades de efeito
- Seletores de canal
- Saída de dados
- Comentários
- Requirements
- Tópicos relacionados
Exemplo
Antes |
---|
Grafo dos dados de saída do 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));
Propriedades de efeito
Aqui está a equação para gerar a saída.
i é avaliado de 0 para o número de compartimentos. O efeito gera um histograma para valores de pixel entre 0 e 1. Os valores fora desse intervalo são fixados no intervalo. O intervalo de um bucket específico depende do número de buckets. Esse efeito funciona em pixels de bitmap retos. Os canais de cores do bitmap de entrada são divididos pelo canal alfa para calcular esse efeito.
Nome de exibição e enumeração de índice | Tipo e valor padrão | Descrição |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
Especifica o número de compartimentos usados para o histograma. O intervalo de valores de intensidade que se enquadram em um bucket específico depende do número de buckets especificados. |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
Especifica o canal usado para gerar o histograma. Esse efeito tem uma única saída de dados correspondente ao canal especificado. Consulte Seletores de canal para obter mais informações. |
HistogramOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Somente propriedade de saída. |
A matriz de saída. |
Seletores de canal
Enumeração | Descrição |
---|---|
D2D1_CHANNEL_SELECTOR_R | O efeito gera a saída do histograma com base no canal vermelho. |
D2D1_CHANNEL_SELECTOR_G | O efeito gera a saída de histograma com base no canal verde. |
D2D1_CHANNEL_SELECTOR_B | O efeito gera a saída de histograma com base no canal azul. |
D2D1_CHANNEL_SELECTOR_A | O efeito gera a saída de histograma com base no canal alfa. |
Saída de dados
Esse efeito gera um FLOAT[], com o número de elementos correspondente ao número de compartimentos especificados. Cada elemento no FLOAT[] é um float. O valor do elemento corresponde ao número de elementos nesse compartimento.
Comentários
Observação
O método CreateEffect falhará se o dispositivo não der suporte ao DirectCompute e retornar HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Todos os cartões DirectX11 e cartões DirectX10 que dão suporte ao DirectCompute podem usar o efeito .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Servidor mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |