선형 그라데이션 만들기
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)을 통과하는 선과 평행한 모든 선을 따라 이동하면서 점차 변합니다.