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 |