Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Кисти

GDI+ имеет несколько различных видов кистей, мы объясним простейшие из них, чтобы знать о принципах. Каждый тип кисти представлен экземпляром класса, производным из

System.Drawing.Brush
(этот класс является абстрактным, поэтому нельзя создать экземпляры объектов
Brush
как только объекты производных классов). Простейшая кисть указывает, что область должна быть заполнена сплошным цветом. Этот вид кисти представлен экземпляром класса
System.Drawing.SolidBrush
, который можно создать таким образом:

Brush solidBeigeBrush = new SolidBrush(Color.Beige);

Brush solidFunnyOrangyBrownBrush = new SolidBrush(Color.FromArgb(255, 155, 100)

Альтернативно, если кисть является одним из именованных цветов Интернета, то можно создать кисть более просто с помощью другого класса

System.Drawing.Brushes
.
Brushes
является одним из тех классов, экземпляры которых реально никогда не создаются (он имеет закрытый конструктор, чтобы не дать возможности это сделать). Большое число статических свойств возвращает кисть специального цвета.
Brushes
используется так:

Brush solidAzureBrush = Brushes.Azure;

Brush solidChocolateBrush = Brushes.Chocolate;

Следующий уровень сложности представляет штриховая кисть, которая заполняет область, рисуя некоторый шаблон-узор. Этот тип кисти находится в пространстве имен

Drawing2D
, представленном классом
System.Drawing.Drawing2D.HatchBrush
. Класс
Brushes
не сможет помочь в случае штриховой кисти, необходимо будет создать одну из них явно, задавая стиль штриховки и два цвета — цвет переднего плана и цвет фона (но можно опустить цвет фона, в таком случае по умолчанию используется черный цвет). Стиль штриховки задают с помощью перечисления
System.Drawing.Drawing2D.HatchStyle
. Существует большое число доступных значений
HatchStyle
, поэтому проще всего обратиться к документации MSDN для получения полного списка. Типичными стилями, например, являются
ForwardDiagonal
,
Cross
,
DiagonalCross
,
SmallConfetti
и
ZigZag
. Ниже приведены примеры создания штриховой кисти

Brush crossBrush = new HatchBrush(HatchStyle.Cross, Color.Azure);

// фоновый цвет для CrosstBrush будет черный

Brush brickBrush = new HatchBrush(HatchStyle.DiagonalBrick, Color.DarkGoldenrod.Color.Cyan);

Сплошные и штриховые кисти — единственные кисти, доступные в GDI. GDI+ добавляет пару новых стилей кисти:

□ Кисть

System.Drawing.Drawing2D.LinearGradientBrush
заполняет область цветом, который изменяется на экране.

□ Кисть

System.Drawing.Drawmg2D.PathGradientBrush
действует аналогично, но в этом случае цвет меняется вдоль кривой в закрашиваемой области. Мы не будем рассматривать здесь эти кисти. Отметим только, что обе они могут создать интересные эффекты при аккуратном использовании. Пример
Bezier
из главы 9 использует кисть с линейным градиентом для закрашивания фона окна.

Перья

В отличие от кистей перья представлены только одним классов —

System.Drawing.Pen
. Перо в действительности является немного более с южным, чем чисть, так как оно должно указывать толщину линий (ширину в пикселях), а для широкой линии,— как закрашивать область внутри нее. Перья могут также определять ряд других свойств, которые находятся за пределами нашего рассмотрения, но включают упоминавшееся ранее свойство
Alignment
, указывающее, где относительно границы фигуры должна быть нарисована линия, а также какую фигуру нарисовать в конце линии (нужно ли округлять форму).

Область внутри толстой линии может быть закрашена сплошным цветом с помощью пера или кисти. Следовательно, экземпляр Pen может содержать ссылку на экземпляр

Brush
. Это достаточно мощное средство, так как при его содействии можно нарисовать линии, окрашенные с помощью штрихования или линейного затенения. Существует четыре различных способа, с помощью которых создаются экземпляры
Pen
. Можно задать цвет или кисть, оба эти конструктора будут создавать перо шириной в один пиксель. Можно также в дополнение к цвету или кисти задать значение типа
float
, представляющее ширину пера (на тот случай, если для объекта
Graphics
, который будет выполнять рисование, используются нестандартные единицы измерения, такие как миллиметры или дюймы, или доли дюймов). Поэтому, например, можно так создавать перья:

Brush brickBrush = new HatchBrush(HatchStyle.DiagonalBrick, Color.DarkGoldenrod, Color.Cyan);

Pen solidBluePen = new Pen(Color.FromArgb(0, 0, 255));

Pen solidWideBluePen = new Pen(Color.Blue, 4);

Pen brickPen = new Pen(BrickBrush);

Pen brickWidePen = new Pen(BrickBrush, 10);

Кроме того, для быстрого создания перьев можно использовать класс

System.Drawing.Pens
, который подобно классу
Brushes
содержит ряд готовых перьев. Эти перья все имеют ширину в один пиксель и используют обычное множество именованных цветов Интернета, что позволяет создавать перья таким образом:

Pen SolidYellowPen = Pens.Yellow;

Рисование фигур и линий

В первой части главы были рассмотрены базовые классы и объекты, требуемые для рисования специальных фигур и т.д. на экране. Теперь дадим обзор некоторых методов рисования, предоставляемых классом Graphics, и в конце — кратким примером проиллюстрируем несколько кистей и перьев.

System.Drawing.Graphics
имеет большое число методов, позволяющих рисовать различные линии, контуры фигур и сплошные фигуры. Их существует слишком много, но таблица (см. ниже) представляет основные методы и дает представление о множестве фигур, которые можно нарисовать.

  • Читать дальше
  • 1
  • ...
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: