13.6. Кисти Brush в .NET

В .NET есть несколько классов заливки, базовым для которых является Brush. Это класс, который позволяет задавать параметры заливки для таких фигур, как прямоугольник, эллипс, текст и т. д. Самый простой способ получить кисть нужного цвета — использовать системную кисть из перечисления SystemBrushes. Например, следующая строка создает заливку, которой в Windows окрашиваются рабочие области окон:

   Brush brush = SystemBrushes.Window;

Класс Brush абстрактный, и вы не можете создать непосредственно его экземпляр, потому что у него есть абстрактные методы, которые не реализованы, но созданы для того, чтобы их реализовывали наследники. Самый простой и самый распространенный наследник: SolidBrush. Это не от русского слова "солидный", а от английского solid — сплошной, т. е. эта заливка заполняет область полностью одним цветом и одним узором:

   Brush brush = new SolidBrush(Color.Red);
   e.Graphics.FillRectangle(brush,
     new Rectangle(10, 10, ClientSize.Width - 20,
          ClientSize.Height - 20));

В этом примере сначала создается новая кисть для закраски прямоугольника красным цветом. Во второй строке с помощью метода FillRectangle() я закрашиваю созданной кистью большой прямоугольник.

Обратите внимание, как я инициализирую новую кисть. Несмотря на то, что я создаю SolidBrush, я присваиваю результат классу предка Brush. Это чудеса ООП. Я мог бы присваивать результат переменной SolidBrush, и на дальнейшую работу это не повлияло бы:

   SolidBrush brush = new SolidBrush(Color.Red);

Но у меня выработалась привычка присваивать именно Brush, не знаю почему.

Еще одна кисть, которую мы рассмотрим, — LinearGradientBrush:

   Point p1 = new Point(10, 10);
   Point p2 = new Point(10, ClientSize.Height - 10);

   Brush brush = new LinearGradientBrush(p1, p2,
          Color.Red, Color.Wheat);
   e.Graphics.FillRectangle(brush,
     new Rectangle(10, 10, ClientSize.Width - 20,
          ClientSize.Height - 20));

Кисть LinearGradientBrush позволяет создавать линейный градиент. В качестве конструктора объект получает две точки (начало и конец градиента) и два цвета (начальный и конечный цвета градиента). Имея эти данные, система сама раскрасит заполняемую область плавным переходом от одного цвета к другому.

Предыдущая глава

13.5. .NET Перья

Следующая глава

13.7. Работа с картинками в C#

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне