PathGradientBrush::GetInterpolationColors 메서드(gdipluspath.h)
PathGradientBrush::GetInterpolationColors 메서드는 이 경로 그라데이션 브러시에 대해 현재 지정된 미리 설정된 색 및 혼합 위치를 가져옵니다.
구문
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
매개 변수
[out] presetColors
형식: 색*
미리 설정된 색을 수신하는 배열에 대한 포인터입니다. presetColors 배열에서 지정된 인덱스의 색은 blendPositions 배열에서 동일한 인덱스의 혼합 위치에 해당합니다.
[out] blendPositions
형식: REAL*
혼합 위치를 받는 배열에 대한 포인터입니다. 각 혼합 위치는 0에서 1까지의 숫자입니다. 여기서 0은 그라데이션의 경계를 나타내고 1은 중심점을 나타냅니다. 0에서 1 사이의 혼합 위치는 경계에서 중심점까지의 거리의 특정 부분인 모든 점 집합을 나타냅니다. 예를 들어 혼합 위치가 0.7이면 경계에서 중심점까지의 70%인 모든 점 집합을 나타냅니다.
[in] count
형식: INT
presetColors 배열의 요소 수를 지정하는 정수입니다. blendPositions 배열의 요소 수와 동일합니다.
반환 값
형식: 상태
메서드가 성공하면 Status 열거형의 요소인 확인을 반환합니다.
메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.
설명
간단한 경로 그라데이션 브러시에는 경계 색과 가운데 색의 두 가지 색이 있습니다. 이러한 브러시로 칠하면 경계 경로에서 가운데 지점으로 이동할 때 경계 색에서 가운데 색으로 색이 점차 변경됩니다. 미리 설정된 색 배열과 혼합 위치 배열을 지정하여 보다 복잡한 그라데이션을 만들 수 있습니다.
PathGradientBrush::GetInterpolationColors 메서드를 호출하기 전에 두 개의 버퍼를 할당해야 합니다. 하나는 미리 설정된 색 배열을 보관하고 다른 하나는 혼합 위치 배열을 보유합니다. PathGradientBrush 개체의 PathGradientBrush::GetInterpolationColorCount 메서드를 호출하여 해당 버퍼의 필요한 크기를 확인할 수 있습니다. 색 버퍼의 크기는 PathGradientBrush::GetInterpolationColorCount 의 반환 값에 sizeof(Color)를 곱한 값입니다. 위치 버퍼의 크기는 PathGradientBrush::GetInterpolationColorCount 의 값에 sizeof( REAL)를 곱한 값입니다.
예제
다음 예제에서는 삼각형 경로에서 PathGradientBrush 개체를 만듭니다. 코드는 미리 설정된 색을 빨강, 파랑 및 아쿠아로 설정하고 혼합 위치를 0, 0.6 및 1로 설정합니다. 이 코드는 PathGradientBrush 개체의 PathGradientBrush::GetInterpolationColorCount 메서드를 호출하여 현재 브러시에 대해 설정된 미리 설정된 색 수를 가져옵니다. 다음으로 코드는 두 개의 버퍼를 할당합니다. 하나는 미리 설정된 색 배열을 보관하고 다른 하나는 혼합 위치의 배열을 보유합니다. PathGradientBrush 개체의 PathGradientBrush::GetInterpolationColors 메서드를 호출하면 버퍼가 미리 설정된 색과 혼합 위치로 채워집니다. 마지막으로 코드는 미리 설정된 각 색으로 작은 사각형을 채웁니다.
VOID Example_GetInterpColors(HDC hdc)
{
Graphics graphics(hdc);
// Create a path gradient brush from an array of points, and
// set the interpolation colors for that brush.
Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
PathGradientBrush pthGrBrush(points, 3);
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 255)}; // aqua
REAL pos[] = {
0.0f, // red at the boundary
0.6f, // blue 60 percent of the way from the boundary to the center
1.0f}; // aqua at the center
pthGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the path gradient brush.
INT colorCount = pthGrBrush.GetInterpolationColorCount();
Color* colors = new Color[colorCount];
REAL* positions = new REAL[colorCount];
pthGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small square with each of the interpolation colors.
SolidBrush solidBrush(Color(255, 255, 255, 255));
for(INT j = 0; j < colorCount; ++j)
{
solidBrush.SetColor(colors[j]);
graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
}
delete [] colors;
delete [] positions;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP, Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | gdipluspath.h(Gdiplus.h 포함) |
라이브러리 | Gdiplus.lib |
DLL | Gdiplus.dll |