Efeito do histograma
Use o efeito de histograma para gerar um histograma para o bitmap de entrada com base no número especificado de compartimentos.
O CLSID para este efeito é CLSID_D2D1Histogram.
- Exemplo
- Propriedades de efeito
- Seletores de canal
- Saída de dados
- Observações
- Requisitos
- Tópicos relacionados
Exemplo
Antes |
---|
![]() |
Gráfico 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 do efeito
Aqui está a equação para gerar a saída.
i é avaliado de 0 ao número de caixotes. O efeito gera um histograma para valores de pixel entre 0 e 1. Os valores fora desse intervalo são fixados ao 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 cor do bitmap de entrada são divididos pelo canal alfa para calcular esse efeito.
Seletores de canais
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 do histograma com base no canal verde. |
D2D1_CHANNEL_SELECTOR_B | O efeito gera a saída do histograma com base no canal azul. |
D2D1_CHANNEL_SELECTOR_A | O efeito gera a saída do histograma com base no canal alfa. |
Saída de dados
Este efeito produz um FLOAT[], com o número de elementos correspondente ao número de compartimentos especificados. Cada elemento no FLOAT[] é um flutuador. 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 suportar DirectCompute e retornar HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Todas as placas DirectX11 e DirectX10 que suportam DirectCompute podem usar o efeito.
Requerimentos
Exigência | Valor |
---|---|
Cliente mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Servidor mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |