다음을 통해 공유


선형 그라데이션 만들기

GDI+는 가로, 세로, 대각선 선형 그라데이션을 제공합니다. 기본적으로 선형 그라데이션의 색은 균일하게 변경됩니다. 그러나 선형 그라데이션을 사용자 지정하여 색이 균일하지 않은 방식으로 변경되도록 할 수 있습니다.

가로 선형 그라데이션

다음 예제에서는 가로 선형 그라데이션 브러시를 사용하여 선, 타원 및 사각형을 채웁니다.

LinearGradientBrush linGrBrush(
   Point(0, 10),
   Point(200, 10),
   Color(255, 255, 0, 0),   // opaque red
   Color(255, 0, 0, 255));  // opaque blue

Pen pen(&linGrBrush);

graphics.DrawLine(&pen, 0, 10, 200, 10);
graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);

LinearGradientBrush 생성자는 4개의 인수(2개 점 및 2개의 색)를 받습니다. 첫 번째 점(0, 10)은 첫 번째 색(빨강)과 연결되고 두 번째 점(200, 10)은 두 번째 색(파란색)과 연결됩니다. 예상대로 (0, 10)에서 (200, 10)로 그리는 선은 빨간색에서 파란색으로 점진적으로 변경됩니다.

포인트의 10대(50, 10) 및 (200, 10)는 중요하지 않습니다. 중요한 것은 두 점의 두 번째 좌표가 같고, 두 점을 연결하는 선은 가로입니다. 가로 좌표가 0에서 200으로 이동함에 따라 타원과 사각형도 빨간색에서 파란색으로 점진적으로 변합니다.

다음 그림에서는 줄, 타원, 사각형을 보여 줍니다. 가로 좌표가 200을 초과하여 증가하면 색 그라데이션이 반복됩니다.

줄과 줄임표를 채우는 가로 그라데이션과 타원보다 긴 사각형을 보여 주는 그림

선형 그라데이션 사용자 지정

앞의 예제에서 색상 구성 요소는 가로 좌표 0에서 가로 좌표 200으로 이동함에 따라 선형으로 변경됩니다. 예를 들어 첫 번째 좌표가 0과 200 사이의 중간인 점에는 0과 255 사이의 중간인 파란색 구성 요소가 있습니다.

GDI+를 사용하면 그라데이션의 가장자리마다 색이 달라지는 방식을 조정할 수 있습니다. 다음 표에 따라 검은색에서 빨간색으로 변경되는 그라데이션 브러시를 만들려는 경우를 가정해 보겠습니다.

가로 좌표 RGB 구성 요소
0 (0, 0, 0)
40 (128, 0, 0)
200 (255, 0, 0)

 

빨간색 구성 요소는 가로 좌표가 0에서 200까지의 20%에 불과할 때 절반 강도입니다.

다음 예제에서는 LinearGradientBrush 개체의 LinearGradientBrush::SetBlend 메서드를 호출하여 세 개의 상대 강도와 세 개의 상대 위치를 연결합니다. 앞의 표에서와 같이 상대 강도 0.5는 0.2의 상대 위치와 연결됩니다. 코드는 그라데이션 브러시로 타원과 사각형을 채웁니다.

LinearGradientBrush linGrBrush(
   Point(0, 10),
   Point(200, 10),
   Color(255, 0, 0, 0),     // opaque black 
   Color(255, 255, 0, 0));  // opaque red

REAL relativeIntensities[] = {0.0f, 0.5f, 1.0f};
REAL relativePositions[]   = {0.0f, 0.2f, 1.0f};

linGrBrush.SetBlend(relativeIntensities, relativePositions, 3);

graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);

다음 그림에서는 결과 타원 및 사각형을 보여 줍니다.

줄임표를 채우는 가로 그라데이션과 타원보다 긴 사각형을 보여 주는 그림

대각선 선형 그라데이션

이전 예제의 그라데이션은 가로입니다. 즉, 가로 선을 따라 이동하면 색이 점차 변합니다. 세로 그라데이션 및 대각선 그라데이션을 정의할 수도 있습니다. 다음 코드는 점(0, 0) 및 (200, 100)를 LinearGradientBrush 생성자에 전달합니다. 파란색은 (0, 0)과 연결되고 녹색은 (200, 100)과 연결됩니다. 선(펜 너비 10)과 타원은 선형 그라데이션 브러시로 채워집니다.

LinearGradientBrush linGrBrush(
   Point(0, 0),
   Point(200, 100),
   Color(255, 0, 0, 255),   // opaque blue
   Color(255, 0, 255, 0));  // opaque green

Pen pen(&linGrBrush, 10);

graphics.DrawLine(&pen, 0, 0, 600, 300);
graphics.FillEllipse(&linGrBrush, 10, 100, 200, 100);

다음 그림에서는 선과 타원을 보여 줍니다. 타원의 색은 (0, 0) 및 (200, 100)을 통과하는 선과 평행한 모든 선을 따라 이동하면서 점차 변합니다.

타원과 대각선을 채우는 대각선 그라데이션을 보여 주는 그림