Condividi tramite


Metodo Bitmap::GetHistogram (gdiplusheaders.h)

Il metodo Bitmap::GetHistogram restituisce uno o più istogrammi per i canali di colore specificati di questo oggetto Bitmap .

Sintassi

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

Parametri

[in] format

Tipo: IstogramFormat

Elemento dell'enumerazione HistogramFormat che specifica i canali per i quali verranno creati gli istogrammi .

[in] NumberOfEntries

Tipo: UINT

Intero che specifica il numero di elementi (di tipo UINT) in ognuna delle matrici puntate da channel0, channel1, channel2 e channel3. È necessario allocare memoria per tali matrici prima di chiamare Bitmap::GetHistogram. Per determinare il numero necessario di elementi, chiamare Bitmap::GetHistogramSize.

[out] channel0

Tipo: UINT*

Puntatore a una matrice di S UINTche riceve il primo istogramma.

[out] channel1

Tipo: UINT*

Puntatore a una matrice di S UINTche riceve il secondo istogramma se è presente un secondo istogramma. Passare NULL se non è presente alcun secondo istogramma.

[out] channel2

Tipo: UINT*

Puntatore a una matrice di S UINTche riceve il terzo istogramma se è presente un terzo istogramma. Passare NULL se non è presente alcun terzo istogramma.

[out] channel3

Tipo: UINT*

Puntatore a una matrice di S UINTche riceve il quarto istogramma se è presente un quarto istogramma. Passare NULL se non è presente alcun quarto istogramma.

Valore restituito

Tipo: Stato

Se il metodo ha esito positivo, restituisce Ok, ovvero un elemento dell'enumerazione Status .

Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .

Commenti

Il numero di istogrammi restituiti dipende dall'elemento di enumerazione HistogramFormat passato al parametro di formato . Ad esempio, se il formato è uguale a IstogramFormatRGB, vengono restituiti tre istogrammi: uno per i canali rosso, verde e blu. In tal caso, channel0 punta alla matrice che riceve l'istogramma del canale rosso, channel1 punta alla matrice che riceve l'istogramma del canale verde e channel2 punta alla matrice che riceve l'istogramma a canale blu. Per HistogramFormatRGB, channel3 deve essere impostato su NULL perché non esiste un quarto istogramma. Per altre informazioni, vedere l'enumerazione HistogramFormat .

Esempio

Nell'esempio seguente viene costruito un oggetto Bitmap da un file BMP. Il codice recupera tre istogrammi dalla bitmap: uno per i canali rosso, verde e blu. Si noti l'ordine di RGB nel nome dell'elemento di enumerazione HistogramFormatRGB. R è prima, quindi corrisponde a ch0. Il verde è secondo, quindi corrisponde a ch1. Il blu è terzo, quindi corrisponde a ch2. Il parametro finale passato a Bitmap::GetHistogram è NULL perché non esiste un quarto istogramma.

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;

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione gdiplusheaders.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Bitmap