Метод Bitmap::GetHistogram (gdiplusheaders.h)

Метод Bitmap::GetHistogram возвращает одну или несколько гистограмм для указанных цветовых каналов этого объекта Bitmap .

Синтаксис

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

Параметры

[in] format

Тип: HistogramFormat

Элемент перечисления HistogramFormat , указывающий каналы, для которых будут созданы гистограммы.

[in] NumberOfEntries

Тип: UINT

Целое число, указывающее количество элементов (типа UINT) в каждом массиве, на который указывают channel0, channel1, channel2 и channel3. Перед вызовом Bitmap::GetHistogram необходимо выделить память для этих массивов. Чтобы определить необходимое количество элементов, вызовите Bitmap::GetHistogramSize.

[out] channel0

Тип: UINT*

Указатель на массив объектов UINT, получающих первую гистограмму.

[out] channel1

Тип: UINT*

Указатель на массив UINT, который получает вторую гистограмму, если есть вторая гистограмма. Если второй гистограммы нет, передайте значение NULL .

[out] channel2

Тип: UINT*

Указатель на массив объектов UINT, который получает третью гистограмму при наличии третьей гистограммы. Если третья гистограмма отсутствует, передайте значение NULL .

[out] channel3

Тип: UINT*

Указатель на массив объектов UINT, который получает четвертую гистограмму при наличии четвертой гистограммы. Если четвертая гистограмма отсутствует, передайте значение NULL .

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается сбоем, он возвращает один из других элементов перечисления Status .

Комментарии

Количество возвращаемых гистограмм зависит от элемента перечисления HistogramFormat , передаваемого в параметр format . Например, если формат равен HistogramFormatRGB, возвращаются три гистограммы: по одной для красного, зеленого и синего каналов. В этом случае channel0 указывает на массив, получающий гистограмму красного канала, channel1 — на массив, получающий гистограмму зеленого канала, а channel2 — на массив, получающий гистограмму синего канала. Для HistogramFormatRGBдля channel3 необходимо задать значение NULL , так как четвертая гистограмма отсутствует. Дополнительные сведения см. в перечислении HistogramFormat .

Примеры

В следующем примере создается объект Bitmap из BMP-файла. Код извлекает три гистограммы из растрового изображения: по одной для красного, зеленого и синего каналов. Обратите внимание на порядок RGB в имени элемента перечисления HistogramFormatRGB. R является первым, поэтому он соответствует ch0. Зеленый является вторым, поэтому соответствует ch1. Синий является третьим, поэтому он соответствует ch2. Последний параметр, передаваемый в Bitmap::GetHistogram , имеет значение NULL , так как четвертая гистограмма отсутствует.

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;

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Bitmap