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
channel0, channel1, channel2 및 channel3에서 가리키는 각 배열의 요소 수(UINT 형식)를 지정하는 정수입니다. 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 열거형의 다른 요소 중 하나를 반환합니다.
설명
반환되는 히스토그램 수는 format 매개 변수에 전달된 HistogramFormat 열거형 요소에 따라 달라집니다. 예를 들어 형식 이 HistogramFormatRGB와 같으면 빨강, 녹색 및 파랑 채널에 각각 하나씩 세 개의 히스토그램이 반환됩니다. 이 경우 channel0 은 빨간색 채널 히스토그램을 수신하는 배열을 가리키고 channel1 은 녹색 채널 히스토그램을 수신하는 배열을 가리키고 channel2 는 파란색 채널 히스토그램을 수신하는 배열을 가리킵니다. HistogramFormatRGB의 경우 네 번째 히스토그램이 없으므로 channel3을 NULL로 설정해야 합니다. 자세한 내용은 HistogramFormat 열거형을 참조하세요.
예제
다음 예제에서는 BMP 파일에서 Bitmap 개체를 생성합니다. 코드는 비트맵에서 각각 빨간색, 녹색 및 파란색 채널에 대해 하나씩 세 개의 히스토그램을 검색합니다. 열거형 요소 히스토그램FormatRGB의 이름에 RGB의 순서를 적어 둡다. R이 첫 번째이므로 ch0에 해당합니다. 녹색은 두 번째이므로 ch1에 해당합니다. 파란색은 세 번째이므로 ch2에 해당합니다. 비트맵::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 |