Método Bitmap::GetHistogram (gdiplusheaders.h)

O método Bitmap::GetHistogram retorna um ou mais histogramas para canais de cores especificados deste objeto Bitmap .

Sintaxe

Status GetHistogram(
  [in]  HistogramFormat format,
  [in]  UINT            NumberOfEntries,
  [out] UINT            *channel0,
  [out] UINT            *channel1,
  [out] UINT            *channel2,
  [out] UINT            *channel3
);

Parâmetros

[in] format

Tipo: HistogramFormat

Elemento da enumeração HistogramFormat que especifica os canais para os quais os histogramas serão criados.

[in] NumberOfEntries

Tipo: UINT

Inteiro que especifica o número de elementos (do tipo UINT) em cada uma das matrizes apontadas por channel0, channel1, channel2 e channel3. Você deve alocar memória para essas matrizes antes de chamar Bitmap::GetHistogram. Para determinar o número necessário de elementos, chame Bitmap::GetHistogramSize.

[out] channel0

Tipo: UINT*

Ponteiro para uma matriz de UINTs que recebe o primeiro histograma.

[out] channel1

Tipo: UINT*

Ponteiro para uma matriz de UINTs que recebe o segundo histograma se houver um segundo histograma. Passe NULL se não houver um segundo histograma.

[out] channel2

Tipo: UINT*

Ponteiro para uma matriz de UINTs que recebe o terceiro histograma se houver um terceiro histograma. Passe NULL se não houver nenhum terceiro histograma.

[out] channel3

Tipo: UINT*

Ponteiro para uma matriz de UINTs que recebe o quarto histograma se houver um quarto histograma. Passe NULL se não houver um quarto histograma.

Valor retornado

Tipo: Status

Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .

Se o método falhar, ele retornará um dos outros elementos da enumeração Status .

Comentários

O número de histogramas retornados depende do elemento de enumeração HistogramFormat passado para o parâmetro de formato . Por exemplo, se o formato for igual a HistogramFormatRGB, três histogramas serão retornados: um para os canais vermelho, verde e azul. Nesse caso, channel0 aponta para a matriz que recebe o histograma de canal vermelho, channel1 aponta para a matriz que recebe o histograma de canal verde e channel2 aponta para a matriz que recebe o histograma de canal azul. Para HistogramFormatRGB, channel3 deve ser definido como NULL porque não há um quarto histograma. Para obter mais detalhes, consulte a enumeração HistogramFormat .

Exemplos

O exemplo a seguir constrói um objeto Bitmap de um arquivo BMP. O código recupera três histogramas do bitmap: um para os canais vermelho, verde e azul. Observe a ordem de RGB no nome do elemento de enumeração HistogramFormatRGB. R é o primeiro, portanto, corresponde a ch0. Verde é o segundo, portanto, corresponde a ch1. Azul é o terceiro, portanto, corresponde a ch2. O parâmetro final passado para Bitmap::GetHistogram é NULL porque não há um quarto histograma.

Bitmap myBitmap(L"Picture.bmp");

UINT numEntries;
myBitmap.GetHistogramSize(HistogramFormatRGB, &numEntries);

UINT* ch0 = new UINT[numEntries];
UINT* ch1 = new UINT[numEntries];
UINT* ch2 = new UINT[numEntries];

myBitmap.GetHistogram(HistogramFormatRGB, numEntries, ch0, ch1, ch2, NULL);

// Print the histogram values for the three channels: red, green, blue.
for(UINT j = 0; j < numEntries; ++j)
{
   printf("%u\t%u\t%u\t%u\n", j, ch0[j], ch1[j], ch2[j]);
}

delete ch0;
delete ch1;
delete ch2;

Requisitos

   
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho gdiplusheaders.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Bitmap