LinearGradientBrush::GetInterpolationColorCount 메서드(gdiplusbrush.h)
LinearGradientBrush::GetInterpolationColorCount 메서드는 현재 이 선형 그라데이션 브러시에 대해 보간되도록 설정된 색 수를 가져옵니다.
구문
INT GetInterpolationColorCount();
반환 값
형식: INT
이 메서드는 이 선형 그라데이션 브러시에 대해 보간할 색 수를 반환합니다. LinearGradientBrush::SetInterpolationColors를 사용하여 색을 설정하지 않은 경우 또는 잘못된 위치가 LinearGradientBrush::SetInterpolationColors에 전달된 경우 LinearGradientBrush::GetInterpolationColorCount는 0을 반환합니다.
설명
간단한 선형 그라데이션 브러시에는 시작 경계의 색과 끝 경계의 색이라는 두 가지 색이 있습니다. 이러한 브러시로 칠할 때 시작 경계에서 끝 경계로 이동할 때 색이 시작 색에서 끝 색으로 점차 변경됩니다. LinearGradientBrush::SetInterpolationColors 메서드를 사용하여 이 선형 그라데이션 브러시에 대해 보간할 색 배열과 해당 혼합 위치를 지정하여 보다 복잡한 그라데이션을 만들 수 있습니다.
LinearGradientBrush::GetInterpolationColors 메서드를 호출하여 선형 그라데이션 브러시에 대해 현재 설정된 색 및 혼합 위치를 가져올 수 있습니다. LinearGradientBrush::GetInterpolationColors 메서드를 호출하기 전에 두 개의 버퍼를 할당해야 합니다. 하나는 색 배열을 보관하고 다른 하나는 혼합 위치 배열을 보유합니다. LinearGradientBrush::GetInterpolationColorCount 메서드를 호출하여 해당 버퍼의 필요한 크기를 확인할 수 있습니다. 색 버퍼의 크기는 LinearGradientBrush::GetInterpolationColorCount 의 반환 값에 sizeof(Color)를 곱한 값입니다. 혼합 위치 버퍼의 크기는 LinearGradientBrush::GetInterpolationColorCount 의 값에 sizeof( REAL)를 곱한 값입니다.
예제
다음 예제에서는 이 선형 그라데이션 브러시에 대해 보간할 색을 빨간색, 파란색 및 녹색으로 설정하고 혼합 위치를 0, 0.3 및 1로 설정합니다. 이 코드는 LinearGradientBrush 개체의 LinearGradientBrush::GetInterpolationColorCount 메서드를 호출하여 현재 브러시에 대해 보간되도록 설정된 색 수를 가져옵니다. 다음으로 코드는 색과 해당 위치를 가져옵니다. 그런 다음 코드는 각 색으로 작은 사각형을 채웁니다.
VOID Example_GetInterpColors(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set the colors to be interpolated.
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 0)}; // green
REAL pos[] = {
0.0f, // red at the left edge
0.3f, // blue at 30 percent of the distance from
// left edge to right edge
1.0f}; // green at the right edge
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 0, 0, 0), // black
Color(255, 255, 255, 255)); // white
linGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the linear gradient brush.
INT colorCount = 0;
Color* colors = NULL;
REAL* positions = NULL;
// How many colors have been specified to be interpolated
// for this brush?
colorCount = linGrBrush.GetInterpolationColorCount();
// Allocate a buffer large enough to hold the set of colors.
colors = new Color[colorCount];
// Allocate a buffer to hold the relative positions of the colors.
positions = REAL[colorCount];
// Get the colors and their relative positions.
linGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small rectangle with each of the colors.
SolidBrush* pSolidBrush;
for(INT j = 0; j < colorCount; j++)
{
pSolidBrush = new SolidBrush(colors[j]);
myGraphics.FillRectangle(pSolidBrush, 15*j, 0, 10, 10);
delete(pSolidBrush);
}
}
요구 사항
지원되는 최소 클라이언트 | Windows XP, Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | gdiplusbrush.h(Gdiplus.h 포함) |
라이브러리 | Gdiplus.lib |
DLL | Gdiplus.dll |
추가 정보
LinearGradientBrush::GetInterpolationColors