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
);

parameters

[in] format

类型: 直方图Format

指定将为其创建直方图的通道的直方图 Format 枚举的元素。

[in] NumberOfEntries

类型: UINT

整数,指定由 channel0channel1channel2channel3 指向的每个数组中) UINT 类型的 (元素数。 在调用 Bitmap::GetHistogram 之前,必须为这些数组分配内存。 若要确定所需的元素数,请调用 Bitmap::GetHistogramSize

[out] channel0

类型: UINT*

指向接收第一个直方图的 UINT数组的指针。

[out] channel1

类型: UINT*

指向 UINT数组的指针,如果存在第二个直方图,则接收第二个直方图。 如果没有第二个直方图,则传递 NULL

[out] channel2

类型: UINT*

指向 UINT数组的指针,如果存在第三个直方图,则接收第三个直方图。 如果没有第三个直方图,则传递 NULL

[out] channel3

类型: UINT*

指向接收第四个直方图(如果有第四个直方图)的 UINT数组的指针。 如果没有第四个直方图,则传递 NULL

返回值

类型: 状态

如果方法成功,则返回 Ok,这是 Status 枚举的元素。

如果 方法失败,它将返回 Status 枚举的其他元素之一。

注解

返回的直方图数取决于传递给 format 参数的 HistogramFormat 枚举元素。 例如,如果 format 等于 HistogramFormatRGB,则返回三个直方图:红色、绿色和蓝色通道各一个。 在这种情况下, channel0 指向接收红色通道直方图的数组, channel1 指向接收绿色通道直方图的数组, channel2 指向接收蓝色通道直方图的数组。 对于 直方图FormatRGB,通道 3 必须设置为 NULL ,因为没有第四个直方图。 有关更多详细信息,请参阅 HistogramFormat 枚举。

示例

以下示例从 BMP 文件构造 位图 对象。 代码从位图中检索三个直方图:红色、绿色和蓝色通道各一个。 请注意枚举元素 直方图FormatRGB 名称中 RGB 的顺序。 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
标头 gdiplusheaders.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

Bitmap