Работа с типами Brush

Работа с типами Brush

Типы, производные от System.Drawing.Brush, используются для заполнения имеющегося региона заданным цветом, узором или изображением. Сам класс Brush является абстрактным типом, поэтому он не позволяет создать соответствующий экземпляр непосредственно. Однако Brush может играть роль базового класса для родственных ему типов кисти (например, SolidBrush, HatchBrush, LinearGradientBrush и т.д.). Кроме относящихся к Brush типов, пространство имей System.Drawing определяет также два вспомогательных класса, возвращающие кисти, уже сконфигурированные с помощью ряда статических свойств: это классы Brushes и SystemBrushes. Так или иначе, получив кисть, вы получаете возможность вызвать любой из методов FillXXX() типа Graphics.

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

private void MainForm_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Создание SolidBrush синего цвета.

 SolidBrush blueBrush = new SolidBrush(Color.Blue);

 // Получение готовой кисти из типа Brushes.

 SolidBrush pen2 = (SolidBrush)Brushes.Firebrick;

 // Визуализация некоторых шаблонов.

 g.FillEllipse(blueBrush, 10, 10, 100, 100);

 g.FillPie(Brushes.Black, 150, 10, 120, 150, 90, 80);

 // Рисование пурпурного полигона…

 SolidBrush brush3= new SolidBrush(Color.Purple);

 g.FillPolygon(brush3, new Point[]{ new Point(30, 140), new Point(265, 200), new Point(100, 225), new Point(190, 190), new Point(50, 330), new Point(20, 180) });

 // … и прямоугольника, содержащего текст

 Rectangle r = new Rectangle(150, 10, 130, 60);

 g.FillRectangle(Brushes.Blue, r);

 g.DrawString("Эй, вы, там, наверху!… Я вам привет передаю.", new Font("Arial", 11), Brushes.White, r);

}

Надеюсь, вы согласитесь, что это приложение почти идентично созданной выше программе CustomPenApp, но использует методы FillXXX() и типы SolidBrush вместо перьев и соответствующим им методов DrawXXX(). На рис. 20.14 показан соответствующий вывод.

Исходный код. Проект SolidBrushApp размещен в подкаталоге, соответствующем главе 20.

Рис. 20.14. Работа с типами Brush

Поделитесь на страничке

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

Похожие главы из других книг

3.2. Работа с различными типами данных

Из книги Офисное программирование автора Фризен Ирина Григорьевна

3.2. Работа с различными типами данных Тип, определяемый пользователемVBA позволяет пользователю определять свои собственные типы данных. Определенный пользователем тип нужен, когда одной переменной необходимо обозначить несколько связанных по смыслу элементов данных,


Эксперименты с числовыми типами данных

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Эксперименты с числовыми типами данных Числовые типы .NET поддерживают свойства MaxValue и МinValue, сообщающие информацию о диапазоне данных, которые может хранить данный тип. Предположим, что мы создали несколько переменных типа System.UInt16 (unsigned short – короткое целое без знака), как


Работа с типами StringWriter и StringReader

Из книги Стандарты программирования на С++. 101 правило и рекомендация автора Александреску Андрей

Работа с типами StringWriter и StringReader Используя типы StringWriter и StringReader, вы можете обращаться с текстовой информацией, как с потоком символов в памяти. Это может оказаться полезным тогда, когда необходимо добавить символьную информацию в соответствующий буфер. В следующем


Работа с типами Windows Forms

Из книги VBA для чайников автора Каммингс Стив

Работа с типами Windows Forms При построении приложения Windows Forms вы можете, при желании, создать весь соответствующий программный код вручную (например, в редакторе Блокнот или в редакторе TextPad), а затем отправить файлы *.cs компилятору командной строки C# с флагом /target:winexe.


Работа с типами Pen

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.


91. Работайте с типами, а не с представлениями

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

91. Работайте с типами, а не с представлениями РезюмеНе пытайтесь делать какие-то предположения о том, как именно объекты представлены в памяти. Как именно следует записывать и считывать объекты из памяти — пусть решают типы объектов.ОбсуждениеСтандарт С++ дает очень мало


Знакомство с пользовательскими типами данных

Из книги Photoshop CS4 автора Жвалевский Андрей Валентинович

Знакомство с пользовательскими типами данных Пользовательский тип данных VBA представляет собой, так сказать, поселившуюся под одной крышей компанию выбранных вами типов данных. Определив пользовательский тип данных, вы получаете возможность объявлять переменные этого


Класс Brush

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

Класс Brush Класс Brush является абстрактным классом для создания кистей, с помощью которых можно рисовать фигуры и текст на графической поверхности. Библиотека .NET Compact Framework поддерживает классы SolidBrush и TextureBrush. К сожалению, класс LinearGradientBrush, позволяющий рисовать красивые


Операции с числовыми типами

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Операции с числовыми типами * Операции сравнения. Используйте стандартные операторы отношений (=, <, >, >=, <=, <> или !=)[17].Возможны сравнения строк с использованием таких операторов SQL, как CONTAINING, STARTING WITH и LIKE. В данных операциях числа трактуются как строки. Более


Преобразования между типами дата/время и другими типами данных

Из книги автора

Преобразования между типами дата/время и другими типами данных Любой символьный тип или выражение, чье содержание может быть выражено в правильном литерале даты, может быть преобразовано в соответствующий тип дата/время.Типы данных времени и даты не могут быть


Фильтры группы Brush Strokes (Штрихи)

Из книги автора

Фильтры группы Brush Strokes (Штрихи) Accented Edges (Акценты на краях)Данный фильтр находит и выделяет области с резкими переходами яркости, которые, как правило, являются границами объектов. При этом Accented Edges (Акценты на краях) еще и уменьшает резкость таких областей, немного размывая


9.1. Инструмент Brush (Кисть)

Из книги автора

9.1. Инструмент Brush (Кисть) Brush (Кисть) – один из наиболее используемых инструментов. Способ его применения настолько прост, что понятен даже ребенку: води себе кистью и наблюдай за полученным результатом. Однако все так просто лишь на первый взгляд. Благодаря большому


9.16. Art History Brush (Художественная кисть истории)

Из книги автора

9.16. Art History Brush (Художественная кисть истории) Этот инструмент является производным от History Brush (Кисть истории). Выполняет он примерно то же – перерисовывает с указанного кадра, но делает это по-другому. Art History Brush (Художественная кисть истории), взяв за основу оригинальное


9.17. Spot Healing Brush (Точечная лечащая кисть)

Из книги автора

9.17. Spot Healing Brush (Точечная лечащая кисть) Этот инструмент позволяет быстро удалять пятна и другие недостатки с фотографий. Он работает приблизительно как Healing Brush (Лечащая кисть): рисует схожими пикселами изображения или узором и подбирает текстуру, освещение, прозрачность


9.18. Healing Brush (Лечащая кисть)

Из книги автора

9.18. Healing Brush (Лечащая кисть) Представляет собой инструмент созданный на основе Clone Stamp (Штамп) и предназначенный в основном для работ, так или иначе связанных с фотомонтажом.Healing Brush (Лечащая кисть) дает возможность копировать новые пикселы, взяв за основу либо изображение


Текущая графическая кисть Brush

Из книги автора

Текущая графическая кисть Brush Объект текущей кисти возвращается функцией Brush и имеет тип GraphABCBrush: function Brush: GraphABCBrush; Класс GraphABCBrush имеет следующий интерфейс: type GraphABCBrush = class property NETBrush: System.Drawing.Brush; property Color: GraphABC.Color; property Style: BrushStyleType; property Hatch: HatchStyle; property