
- •Лабораторная работа 1 Тема: Типы данных и операторы языка с#. Массивы. Строки. Регулярные выражения
- •Типы данных c#
- •Преобразования типов
- •Преобразования строк в число. Класс Convert
- •Массивы в c#
- •Int[] k; //k – одномерный массив
- •Базовый класс System.Array
- •Строки в с# Класс Сhar
- •Класс String
- •Строковые константы
- •Пространство имен RegularExpression и классы регулярных выражений
- •Синтаксис регулярных выражений
- •Классы пространства RegularExpressions
- •1. Проработать примеры 1-8, данные в теоретических сведениях. Создать на их основе программы. Получить результаты работы программ и уметь их объяснить. Внести их в отчет с комментариями.
- •2. Выполнить два задания на двумерный массив по заданному номеру варианта и номеру, отсчитанному с конца.
- •3. Выполнить два задания на строки по заданному номеру варианта и номеру, отсчитанному с конца. Использовать в задачах два класса строк: String и StringBuilder.
- •4. Выполнить задание на применение регулярных выражений. Выбрать одно по заданному номеру.
- •Лабораторная работа 2 Тема: Структуры и перечисления как частные виды классов. Классы. Интерфейсы
- •[Атрибуты][модификаторы]enum имя_перечисления[: базовый класс] {список_возможных_значений}
- •[Атрибуты][модификаторы]struct имя_структуры [:список_интерфейсов] {тело_структуры}
- •Классы в c# [атрибуты][модификаторы]class имя_класса [:список_родителей] {тело_класса}
- •Индексаторы
- •Статические поля и методы класса
- •Наследование
- •Интерфейсы
- •Две стратегии реализации интерфейса
- •Преобразование к классу интерфейса
- •Проблемы множественного наследования
- •Коллизия имен
- •Ip1.Prop1("интерфейс iProps: свойство 1");
- •Ip1.Prop2("интерфейс 1 ", 88);
- •Ip2.Prop1("интерфейс iPropsOne: свойство1");
- •2. Наследование от общего предка
- •Обработка исключительных ситуаций
- •Блок finally
- •Лабораторная работа 3 Тема: Разработка gui. Создание sdi-приложений. Обработка событий
- •Создание простых форм с помощью комплекса инструментальных средств разработки программ .Net sdk
- •Режимы дизайна и кода
- •Элементы управления
- •Общие свойства, события и методы элементов управления
- •Обработка событий в Windows Forms
- •События MouseDown и Keypress
- •Форматирование элементов управления
- •Создание меню
- •Закрытие формы
- •Диалоговые окна
- •Создание панели инструментов
- •Список элементов ListBox
- •Потоковые классы
- •Встроенные типы данных и потоки
- •Класс File
- •Сериализация объектов
- •Создание многооконного приложения
- •Для каждого пункта меню пишем обработчики событий, выполняющие соответсвтвующие пункту действия. Перечисление MdiLayout
- •Вырезание, копирование и вставка текстовых фрагментов
- •Контекстное меню
- •Диалоговые окна
- •Сохранение файла при закрытии формы
- •OpenFileDialog и SaveFileDialog для sdi-приложений
- •Лабораторная работа 5 Тема: Создание и вывод графический изображений на форму. Анимация.
- •Класс Region
- •Вывод графических объектов без события Paint
- •Возможности класса Graphics
- •Класс Pen
- •Вывод изображений
- •Элемент управления PictureBox
- •Вывод изображений и двойная буферизация
Возможности класса Graphics
Наиболее часто используемые методы этого класса представлены в таблице.
Таблица 5.4. Некоторые методы класса Graphics
Метод |
Назначение |
FromHdc(), FromHwnd(), FromImage() |
Эти статические методы обеспечивают возможность получения объекта Graphics из элемента управления или изображения |
Clear() |
Заполняет объект Graphics выбранным пользователем цветом, удаляя его предыдущее содержимое |
DrawArc() |
Этот метод предназначен для вывода дуги. |
DrawEllipse() |
Рисует эллипс |
DrawLine() |
Рисует линию |
DrawPie() |
Рисует сектор |
DrawPolygon( ) |
Рисует замкнутую произвольную область |
DrawRectange() |
Рисует прямоугольник |
DrawString() |
Выводит строку |
FillElllpse() |
Рисует закрашенный эллипс |
FillPie() |
Рисует закрашенный сектор |
FillPolygon() |
Рисует закрашенную криволинейную замкнутую область |
FillRectangle() |
Рисует закрашенный прямоугольник |
Класс Pen
Pen - класс пера, имеющий два основных атрибута: цвет и ширину. Пример использования, в проекте типа Windows Application внутри любой функции (например OnPaint или функции – обработчике события нажатия кнопки) введите следующий текст:
System.Drawing.Graphics gr = this.CreateGraphics();
System.Drawing.Pen blue = new Pen(Color.Blue); // синее, ширина: 1
System.Drawing.Pen red = new Pen(Color.Red, 2); // красное, ширина: 2
System.Drawing.Pen green = Pens.Green; // зелёное, ширина: 1
gr.DrawRectangle(blue, 20,20,20,20); // рисуем прямоугольники
gr.DrawRectangle(red, 40,20,20,20);
gr.DrawRectangle(green, 60,20,20,20);
Общий вид функций создания графических примитивов:
DrawRectangle(устройство вывода(класса Pen или Brush), х1,y1, x2, y2);
где х1,y1 – координаты верхнего левого угла, x2, y2 – координаты правого нижнего угла.
DrawLine(устройство вывода(класса Pen или Brush), х1,y1, x2, y2);
где х1,y1 – координаты начала линии, x2, y2 – координаты конца линии
DrawEllipse(устройство вывода(класса Pen или Brush),x , y , высота, ширина);
где х1,y1 – координаты центра.
DrawPie(устройство вывода(класса Pen или Brush),x , y , высота, ширина, начальный угол, насколько градусов повернуть почасовой стрелке);
Чтобы
получить сектор изображенный на рисунке
необходимо задать значение начального
угла 180, значение насколько градусов
повернуть – 90
DrawArc(устройство вывода(класса Pen или Brush),x , y , высота, ширина, начальный угол, насколько градусов повернуть почасовой стрелке);
DrawString(строка или строковая переменная, шрифт, кисть, x,y, [формат вывода текста]);
x, y - координаты верхнего левого угла текста
DrawPolygon (устройство вывода (класса Pen или Brush), массив точек типа Point [ ]);
Таблица 5.5. Свойства класса Реn
Свойство |
Назначение |
Color |
Определяет цвет создаваемых объектом Реn линий |
CustomStartCap, CustomEndCap |
Позволяют получить или установить стиль «наконечника» пера, который будет показан в начале линии (StartCap) и в конце линии (EndCap) |
DashCap |
Позволяет получить или установить стиль «наконечника» для перьев, рисующих пунктирные линии |
DashOffset |
Устанавливает смещение начала пунктира относительно исходной точки пунктирной линии |
DashStyle |
Позволяет получить или установить стиль для пунктирных линий, создаваемых при помощи данного объекта Реn |
LineJoin |
Позволяет получить или установить стиль объединения при пересечении двух линий, выводимых данным объектом Реn |
Width |
Позволяет получить или установить ширину данного пера |
Кроме класса Реn в GDI+ также можно использовать коллекцию заранее определенных перьев (коллекция Pens). При помощи статических свойств коллекции Pens можно мгновенно получить уже готовое перо, без необходимости создавать его вручную. Однако все типы Реn, которые создаются при помощи коллекции Pens, имеют одну и ту же одинаковую ширину, равную 1. Чтобы установить перо для вывода линий определенного стиля необходимо подключить в начале кода using System.Drawing.Drawing2D; затем создавая перо
Pen A.DashStyle = DashStyle. тип линии;
Таблица 5.6. Значения перечисления DashStyle
Значение |
Перечисление |
Custom |
Пользовательский стиль |
Dash |
Штриховая линия |
DashDot |
Штрихпунктирная линия |
DashDotDot |
Штрихпунктирная линия: штрих — точка — точка — штрих |
Dot |
Пунктир из одних точек |
Solid |
Сплошная линия |
Для того чтобы проиллюстрировать приведенную выше информацию, создайте приложение вставьте в класс Form1 следующий текст программы.
public Form1() {
InitializeComponent();
this.Paint += new System. Windows. Forms. PaintEventHandler(Form1_Paint);
}
private void Form1_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Создаем большое перо синего цвета
Pen bluePen = new Pen(Color.Blue,20);
// Создаем еще одно перо при помощи заготовок из коллекции Pens
Pen pen2=Pens.Firebrick;
// Выводим при помощи созданных перьев геометрические фигуры
g.DrawEllipse(bluePen, 10, 10, 100, 100);
g.DrawLine(pen2, 10, 130, 110, 130);
g.DrawPie(Pens.Black, 150, 10, 120, 150, 0,90);
//Выводим многоугольник пурпурного цвета
Pen pen3=new Pen(Color.Purple, 5);
pen3.DashStyle = DashStyle.DashDot;
g.DrawPolygon(pen3, new Point[] { new Point (30, 140), new Point(265, 200),new Point(300, 225), new Point(190, 190),new Point(80, 330), new Point(20, 180)});
// Добавляем прямоугольник со вписанным текстом
Rectangle r = new Rectangle(150, 10, 230,60);
g.DrawRectangle(Pens.Blue,r);
g.DrawString("Геометрические фигуры",new Font("Arial", 12), Brushes.Black, r);
}