Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
for (int x = 0; x ‹ 5; x++) {
// Конфигурация кисти.
HatchStyle temp = (HatchStyle)obj.GetValue(x);
HatchBrush theBrush = new HatchBrush(temp, Color.White, Color.Black);
// Вывод имени из перечня HatchStyle.
g.DrawString(temp.ToString(), new Font (''Times New Roman", 10), Brushes.Black, 0, yOffSet);
// Закраска объекта подходящей кистью.
g.FillEllipse(theBrush, 150, yOffSet, 200, 25);
yOffSet += 40;
}
}
В окне вывода будут показаны заполненные овалы для первых пяти значений видов штриховки (рис. 20.15).

Рис. 20.15. Некоторые стили штриховки
Исходный код.Проект BrushStyles размещен в подкаталоге, соответствующем главе 20.
Работа с TextureBrush
Тип TextureBrush позволяет связать с кистью точечное изображение, чтобы затем использовать ее в операциях закрашивания. Чуть позже будет подробно обсуждаться класс image (изображение) GDI+. Типу TextureBrush предоставляется ссылка на image, используемая этим типом в течение всего цикла его существования. Само изображение обычно хранится в некотором локальном файле (*.bmp. *.gif, *.jpg) или же встроено в компоновочный блок .NET.
Давайте построим пример приложения, использующего тип TextureBrush. Одна кисть будет использоваться дня закраски области клиента изображением из файла clouds.bmp, в то время как другая кисть будет выводить текст с помощью изображения, находящегося в файле Soap bubbles.bmp. Соответствующий вывод показан на рис. 20.16.

Рис. 20.16. Точечные рисунки в качестве кисти
Ваш производный от Form класс должен поддерживать два члена типа Brush, которым присваивается новый объект TextureBrush в конструкторе. Обратите внимание на то, что конструктору типа TextureBrush требуется предоставить на вход тип, производный от Image.
public partial class MainForm: Form {
// Данные для кисти с изображением.
private Brush texturedTextBrush; private Brush texturedBGroundBrush;
public MainForm() {
…
// Загрузка изображения для кисти фона.
Image bGroundBrushImage = new Bitmap("Clouds.bmp");
texturedBGroundBrush = new TextureBrush(bGroundBrushImage);
// Загрузка изображения для кисти текста.
Image textBrushImage = new Bitmap("Soap Bubbles.bmp");
texturedTextBrush = new TextureBrush(textBrushImage);
}
}
Замечание.Файлы *.bmp, которые используются в этом примере, должны находиться в той же папке, где находится само приложение (или должны быть "жестко" указаны пути, по которым эти изображения можно найти). Соответствующая проблема будет обсуждаться в этой главе чуть позже.
Теперь, когда у вас есть два типа TextureBrush, способные выполнить визуализацию, создать обработчик события Paint очень просто.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
Rectangle r = ClientRectangle;
// Рисование облаков в области клиента.
g.FillRectangle(texturedBGroundBrush, r);
// Отображение текста кистью с текстурой.
g.DrawString("Изображения в качестве кисти. Стильно!", new Font("Arial", 30, FontStyle.Bold | FontStyle.Italic), texturedTextBrush, r);
}
Исходный код. Проект TexturedBrushes размещен в подкаталоге, соответствующем главе 20.
Работа с LinearGradientBrush
Последним из рассматриваемых в этом разделе типов будет тип LinearGradientBrush, который можно использовать тогда, когда нужно смешать два цвета в градиентной закраске. Работать с этим типом так же просто, как и с остальными типами кисти. Важным моментом здесь Является то, что при создании LinearGradientBrush нужно указать пару типов Color и значение для направления смешивания из перечня LinearGradientMode.
public enum LinearGradientMode {
Horizontal, Vertical,
ForwardDiagonal, BaсkwardDiagonal
}
Чтобы проверить эти значения, с помощью LinearGradientBrush отобразим серию прямоугольников.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
Rectangle r = new Rectangle(10, 10, 100, 100);
// Градиентная кисть.
LinearGradientBrush theBrush = null;
int yOffSet = 10;
// Получение членов перечня LinearGradientMode.
Array obj = Enum.GetValues(typeof(LinearGradientMode));
// Отображение прямоугольников для членов LinearGradientMode.
for(int x = 0; x ‹ obj.Length; x++) {
// Конфигурация кисти.
LinearGradientMode temp = (LinearGradientMode)obj.SetValue(x);
theBrush = new LinearGradientBrush(r, Color.GreenYellow, Color.Blue, temp);
// Вывод имени из перечня LinearGradientMode.
g.DrawString(temp.ToString(), new Font("Times New Roman", 10), new SolidBrush(Color.Black), 0, yOffSet);
// Закраска прямоугольника подходящей кистью.
g.FillRectangle(theBrush, 150, yOffSet, 200, 50);
yOffSet += 80;
}
}
На рис. 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().
Читать дальшеИнтервал:
Закладка: