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

El método Bitmap::GetHistogram devuelve uno o varios histogramas para los canales de color especificados de este objeto Bitmap .

Sintaxis

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 de la enumeración HistogramFormat que especifica los canales para los que se crearán histogramas.

[in] NumberOfEntries

Tipo: UINT

Entero que especifica el número de elementos (de tipo UINT) en cada una de las matrices a las que apunta channel0, channel1, channel2 y channel3. Debe asignar memoria para esas matrices antes de llamar a Bitmap::GetHistogram. Para determinar el número necesario de elementos, llame a Bitmap::GetHistogramSize.

[out] channel0

Tipo: UINT*

Puntero a una matriz de UINTs que recibe el primer histograma.

[out] channel1

Tipo: UINT*

Puntero a una matriz de UINTque recibe el segundo histograma si hay un segundo histograma. Pase NULL si no hay ningún segundo histograma.

[out] channel2

Tipo: UINT*

Puntero a una matriz de UINTs que recibe el tercer histograma si hay un tercer histograma. Pase NULL si no hay ningún tercer histograma.

[out] channel3

Tipo: UINT*

Puntero a una matriz de UINTs que recibe el cuarto histograma si hay un cuarto histograma. Pase NULL si no hay ningún cuarto histograma.

Valor devuelto

Tipo: Estado

Si el método se realiza correctamente, devuelve Ok, que es un elemento de la enumeración Status .

Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .

Comentarios

El número de histogramas devueltos depende del elemento de enumeración HistogramFormat pasado al parámetro format . Por ejemplo, si el formato es igual a HistogramFormatRGB, se devuelven tres histogramas: uno para los canales rojo, verde y azul. En ese caso, channel0 apunta a la matriz que recibe el histograma de canal rojo, channel1 apunta a la matriz que recibe el histograma de canal verde y channel2 apunta a la matriz que recibe el histograma de canal azul. Para HistogramFormatRGB, channel3 debe establecerse en NULL porque no hay ningún cuarto histograma. Para obtener más información, consulte la enumeración HistogramFormat .

Ejemplos

En el ejemplo siguiente se construye un objeto Bitmap a partir de un archivo BMP. El código recupera tres histogramas del mapa de bits: uno para los canales rojo, verde y azul. Anote el orden de RGB en el nombre del elemento de enumeración HistogramFormatRGB. R es primero, por lo que se corresponde con ch0. El verde es el segundo, por lo que corresponde a ch1. Azul es tercero, por lo que corresponde a ch2. El parámetro final pasado a Bitmap::GetHistogram es NULL porque no hay ningún cuarto 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 compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusheaders.h (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Bitmap