다음을 통해 공유


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

추가 정보

브러시 및 채워진 도형

색상

경로 그라데이션 만들기

색 그라데이션으로 도형 채우기

PathGradientBrush

PathGradientBrush::GetInterpolationColorCount

PathGradientBrush::SetInterpolationColors