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

類型: 長條圖Format

HistogramFormat列舉的 元素,指定要建立長條圖的通道。

[in] NumberOfEntries

類型: UINT

整數,指定channel0channel1、channel2channel3所指向之每個陣列中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列舉專案。 例如,如果 格式 等於 HistogramFormatRGB,則會傳回三個長條圖:一個用於紅色、綠色和藍色通道。 在此情況下, channel0 指向接收紅色通道長條圖的陣列, channel1 會指向接收綠色通道長條圖的陣列, 而 channel2 會指向接收藍色通道長條圖的陣列。 針對 長條圖FormatRGBchannel3 必須設定為 Null ,因為沒有第四個長條圖。 如需詳細資訊,請參閱 HistogramFormat 列舉。

範例

下列範例會從 BMP 檔案建構 Bitmap 物件。 程式碼會從點陣圖中擷取三個長條圖:每個長條圖分別用於紅色、綠色和藍色通道。 請注意列舉專案 HistogramFormatRGB名稱中的 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)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

點陣圖