ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Замечание. Файлы *.bmp, которые используются в этом примере, должны находиться в той же папке, где находится само приложение (или должны быть "жестко" указаны пути, по которым эти изображения можно найти). Соответствующая проблема будет обсуждаться в этой главе чуть позже.
Теперь, когда у вас есть два типа TextureBrush, способные выполнить визуализацию, создать обработчик события Paint
Исходный код. Проект TexturedBrushes размещен в подкаталоге, соответствующем главе 20.
Работа с LinearGradientBrush
Последним из рассматриваемых в этом разделе типов будет тип LinearGradientBrush, который можно использовать тогда, когда нужно смешать два цвета в градиентной закраске. Работать с этим типом так же просто, как и с остальными типами кисти. Важным моментом здесь Является то, что при создании LinearGradientBrush нужно указать пару типов Color и значение для направления смешивания из перечня LinearGradientMode.
Чтобы проверить эти значения, с помощью LinearGradientBrush отобразим серию прямоугольников.
На рис. 20.17 показан результат.
Рис. 20.17. Градиентная кисть за работой
Исходный код. Проект GradientBrushes размещен в подкаталоге, соответствующем главе 20.
Визуализация изображений
К этому моменту вы знаете, как работать с тремя из четырех главных типов GDI+: шрифтами, перьями и кистями. Заключительным типом, который мы с вами рассмотрим в этой главе, будет класс Image (изображение) и связанные с ним подтипы. Абстрактный тип System.Drawing.Image определяет ряд методов и свойств, хранящих различную информацию о том изображении, которое этот тип представляет. Например, для представления размеров изображения класс Image предлагает свойства Width, Height и Size. Другие свойства позволяют получить доступ к палитре изображения. Описания базовых членов класса Image приведены в табл. 20.8.
Таблица 20.8. Члены типа Image
Члены | Описание |
---|---|
FromFile | Статический метод, создающий объект Image из указанного файла |
FromStream | Статический метод, создающий объект Image из указанного потока данных |
Height Width Size HorizontalResolution VerticalResolution | Свойства, возвращающие информацию о размерах данного объекта Image |
Palette | Свойство, возвращающее тип данных ColorPalette, который представляет палитру, используемую для данного объекта Image |
GetBounds | Метод, возвращающий объект Rectangle, который представляет текущие размеры данного объекта Image |
Save | Метод, сохраняющий в файл данные, содержащиеся в производном от Image типе |
Поскольку экземпляр абстрактного класса Image нельзя создать непосредственно, обычно непосредственно создается экземпляр типа Bitmap. Предположим, что у нас есть некоторый класс Form, отображающий три точечных рисунка в области клиента. Указав для каждого из типов Bitmap подходящий файл изображения, просто отобразите их в обработчике события Paint, используя метод Graphics.DrawImage.
Замечание. Файлы *.bmp, которые используются в этом примере, должны находиться в той же папке, где находится само приложение (или должны быть "жестко" указаны пути, по которым эти изображения можно найти). Соответствующая проблема будет обсуждаться в этой главе чуть позже.