次の方法で共有


Bitmap::GetHistogram メソッド (gdiplusheaders.h)

Bitmap::GetHistogram メソッドは、この Bitmap オブジェクトの指定されたカラー チャネルに対して 1 つ以上のヒストグラム返します。

構文

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

channel0channel1channel2channel3 が指す各配列の要素数 (UINT 型) を指定する整数。 Bitmap::GetHistogram を呼び出す前に、これらの配列にメモリを割り当てる必要があります。 必要な要素数を確認するには、 Bitmap::GetHistogramSize を呼び出します。

[out] channel0

種類: UINT*

最初のヒストグラムを受け取る UINTs の配列へのポインター。

[out] channel1

種類: UINT*

2 番目のヒストグラムがある場合に 2 番目のヒストグラムを受け取る UINTs の配列へのポインター。 2 番目のヒストグラムがない場合は NULL を 渡します。

[out] channel2

種類: UINT*

3 番目のヒストグラムがある場合に 3 番目のヒストグラムを受け取る UINTs の配列へのポインター。 3 番目のヒストグラムがない場合は NULL を 渡します。

[out] channel3

種類: UINT*

4 番目のヒストグラムがある場合に 4 番目のヒストグラムを受け取る UINTs の配列へのポインター。 4 番目のヒストグラムがない場合は NULL を 渡します。

戻り値

種類: 状態

メソッドが成功した場合は、Status 列挙の要素である Ok を返します

メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。

解説

返されるヒストグラムの数は、format パラメーターに渡される HistogramFormat 列挙要素によって異なります。 たとえば、 formatHistogramFormatRGB と等しい場合は、赤、緑、青のチャネルごとに 1 つずつ、3 つのヒストグラムが返されます。 その場合、 channel0 は赤チャネル ヒストグラムを受け取る配列を指し、 channel1 は緑チャネル ヒストグラムを受け取る配列を指し、 channel2 は青チャネル ヒストグラムを受け取る配列を指します。 HistogramFormatRGB の場合、channel3 は 4 番目のヒストグラムがないため、NULL に設定する必要があります。 詳細については、 HistogramFormat 列挙を参照してください。

次の例では、BMP ファイルから Bitmap オブジェクトを作成します。 このコードでは、ビットマップから 3 つのヒストグラム (赤、緑、青のチャネルごとに 1 つずつ) を取得します。 列挙要素 HistogramFormatRGB の名前の RGB の順序に注意してください。 R は最初なので、 ch0 に対応します。 緑は 2 番目なので、 ch1 に対応します。 青は 3 番目なので、 ch2 に対応します。 Bitmap::GetHistogram に渡される最後のパラメーターは、4 番目のヒストグラムがないため 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