Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
20
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Заливка фигур с помощью градиентной кисти

Градиентная кисть используется для заливки фигуры плавно меняющимся цветом. Например, с помощью горизонтального градиента можно залить фигуру цветом, плавно меняющимся по мере продвижения от левого края фигуры к ее правому краю. Примером может послужить прямоугольник с черным левым краем (значения красного, зеленого и синего компонентов равны 0) и красным правым краем (значения компонентов цвета равны соответственно 255, 0, 0). Если ширина прямоугольника равна 256 точкам, красный компонент цвета произвольной точки будет на единицу больше, чем красный компонент цвета соседней точки слева от нее. Точка, расположенная в ряду крайней слева, имеет компоненты цвета (0, 0, 0), вторая слева точка — (1, 0, 0), третья — (2, 0, 0) и т. д. до крайней справа точки, цветовые компоненты которой равны (255, 0, 0). Эти интерполированные значения цветовых компонентов составляют градиент цвета.

Линейный градиент меняет цвет по мере движения по горизонтали, вертикали или параллельно некоторой указанной линии. Градиент контура меняет цвет по мере движения по внутренней части и границе этого контура. С помощью настройки градиентов контура можно достигнуть множества различных эффектов.

На следующем рисунке показаны прямоугольник, залитый с помощью кисти линейного градиента, и эллипс, залитый с помощью кисти градиента контура.

--------------------

How to: Create a Linear Gradient

GDI+ provides horizontal, vertical, and diagonal linear gradients. By default, the color in a linear gradient changes uniformly. However, you can customize a linear gradient so that the color changes in a non-uniform fashion.

The following example fills a line, an ellipse, and a rectangle with a horizontal linear gradient brush.

The LinearGradientBrush constructor receives four arguments: two points and two colors. The first point (0, 10) is associated with the first color (red), and the second point (200, 10) is associated with the second color (blue). As you would expect, the line drawn from (0, 10) to (200, 10) changes gradually from red to blue.

The 10s in the points (50, 10) and (200, 10) are not important. What is important is that the two points have the same second coordinate — the line connecting them is horizontal. The ellipse and the rectangle also change gradually from red to blue as the horizontal coordinate goes from 0 to 200.

The following illustration shows the line, the ellipse, and the rectangle. Note that the color gradient repeats itself as the horizontal coordinate increases beyond 200.

Создание линейного градиента

Интерфейс GDI+ поддерживает горизонтальные, вертикальные и диагональные линейные градиенты. По умолчанию цвет в линейном градиенте меняется однородным образом. Однако можно настроить линейный градиент так, чтобы изменение цвета осуществлялось неоднородным образом.

В следующем примере осуществляется заливка линии, эллипса и прямоугольника с помощью кисти линейного горизонтального градиента.

Конструктор LinearGradientBrush принимает четыре параметра: две точки и два цвета. Первая точка (0, 10) соответствует первому цвету (красному), а вторая точка (200, 10) — второму цвету (синему). Как и следовало ожидать, цвет линии, соединяющей точки (0, 10) и (200, 10), плавно меняется от красного к синему.

Вторые координаты (10) для точек (50, 10) и (200, 10) сами по себе не имеют значения. Важно то, что вторые координаты у точек совпадают и соединяющая эти точки линия является горизонтальной. Цвета эллипса и прямоугольника тоже плавно меняются от красного к синему по мере изменения горизонтальной координаты от 0 до 200.

На следующем рисунке представлены линия, эллипс и прямоугольник. Обратите внимание, что цветовой градиент повторяется заново при увеличении горизонтальной координаты до значений, превышающих 200.

-------------------

To use horizontal linear gradients

  • Pass in the opaque red and opaque blue as the third and fourth argument, respectively.

LinearGradientBrush linGrBrush = new LinearGradientBrush(

new Point(0, 10),

new Point(200, 10),

Color.FromArgb(255, 255, 0, 0), // Opaque red

Color.FromArgb(255, 0, 0, 255)); // Opaque blue

Pen pen = new Pen(linGrBrush);

e.Graphics.DrawLine(pen, 0, 10, 200, 10);

e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);

e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);

In the preceding example, the color components change linearly as you move from a horizontal coordinate of 0 to a horizontal coordinate of 200. For example, a point whose first coordinate is halfway between 0 and 200 will have a blue component that is halfway between 0 and 255.

GDI+ allows you to adjust the way a color varies from one edge of a gradient to the other. Suppose you want to create a gradient brush that changes from black to red according to the following table.

Horizontal coordinate

RGB components

0

(0, 0, 0)

40

(128, 0, 0)

200

(255, 0, 0)

Note that the red component is at half intensity when the horizontal coordinate is only 20 percent of the way from 0 to 200.