
- •Содержание
- •Тема 1. Введение в язык программирования c#
- •Первое знакомство с языком программирования с#
- •Языки программирования и компиляторы
- •Устройство компьютера
- •Процесс разработки программного обеспечения
- •Процесс исполнения программы на с#
- •Три различных типа ошибок
- •Знакомство с .Net
- •Синтаксические блоки
- •Тема 2. Синтаксис языка программирования с#, встроенные типы данных Алфавит языка программирования с#
- •Идентификаторы
- •Типы данных языка программирования с#
- •Встроенные простые типы языка c#
- •Совместимость целочисленных типов
- •Тема 3. Переменные, бинарные в языке программирования с# Присваивание значений переменным
- •Бинарные операции.
- •Операции сравнения и логические выражения
- •Алгоритм
- •Тема 4. Операторы ветвления Простой оператор if
- •Оператор if / else
- •Вложенные операторы if
- •Операторы if-else с несколькими ветвями
- •Оператор Switch
- •Рекомендации по использованию оператора switch
- •Область видимости переменных
- •Тема 5. Операторы итерации
- •Оператор цикла while
- •Оператор цикла do-while
- •Оператор цикла for
- •Оператор break
- •Оператор continue
- •Вложенные операторы итерации
- •Тема 6. Массивы Общие сведения
- •Перебор элементов массива Оператор for и foreach
- •????Методы для работы с массивами Многомерные массивы
- •?????Массивы неправильной формы Тема 7. Специальные типы
- •Работа со строками
- •Доступ к отдельным символам в строке.
- •Разработка алгоритма выборки слов
- •Некоторые методы для работы со строками.
- •Тема 8. Объектно-ориентированное программирование ооп основные понятия и предпосылки возникновения.
- •Концепции ооп
- •Убрать Сборки.
- •Элементы класса и применение методов
- •Тема 9. Методы Объявление методов.
- •Статические методы.
- •Конструкторы
- •Семестр 2. Визуальное программирование. Введение в проектирование графических интерфейсов
- •Формы в приложениях c# Работа с формами
- •Добавление формы к проекту
- •Выбор первоначального размещения формы
- •Изменение внешнего вида формы
- •Свойства BackColor, ForeColor и Text
- •Свойства Font, Cursor и BackGroundlmage
- •Прозрачность формы
- •Выбор рамки для формы
- •Кнопки изменения размеров формы
- •Добавление фонового изображения
- •Изменение формы курсора
- •Методы формы
- •Метод Show()
- •Метод ShowDialog()
- •Метод Activate()
- •Метод Hide()
- •Метод Close()
- •События формы.
- •События жизненного цикла формы
- •Событие Load
- •События Activated и Deactivated
- •Изменение текста надписи
- •Изменение шрифта
- •Цвет текста и фона
- •Рамка вокруг поля
- •Изменение курсора мыши
- •Выравнивание текста
- •Меню Добавление меню
- •Позиционирование элементов управления в форме
- •Привязка к сетке
- •Настройка взаимного расположения элементов формы
- •Выравнивание
- •Установка размеров
- •Установка промежутков между элементами
- •Шрифт на кнопке
- •Выравнивание текста
- •Стиль кнопки
- •Блокирование кнопки
- •Изображение на поверхности кнопки
- •Фоновое изображение для кнопки
- •Списки.
- •Список ListBox
- •Список CheckedListBox
- •Список DomainUpDown
- •Элемент управления NumericUpDown
- •Элемент управления TrackBar
- •Форма и клавиша табуляции
- •Установка порядка передачи фокуса при нажатии клавиши Tab
- •Свойство TabStop
- •Вложенные элементы управления и контейнеры
- •Применение элементов управления Group Box и Panel
- •Элемент управления TabControl
- •Стыковка и фиксация элементов управления
- •Свойство Anchor
- •Свойство Dock
- •Обработка событий
- •Проверка данных вводимых пользователем
- •Применение свойств элемента управления TextBox к проверке данных вводимых пользователем
- •Применение событий для проверки на уровне поля
- •События KeyDown и KeyUp
- •Событие KeyPress
- •Работа с фокусом ввода
- •Проверка на уровне формы
- •Оповещение пользователя об ошибках ввода
- •Компонент ErrorProvider
- •Отображение сообщений об ошибках
- •Тема Графика в c#.
- •Контекст отображения
- •Класс Graphics
- •Событие Paint
- •Тема Методы и свойства класса Graphics. Рисование геометрических фигур Рисование линии (DrawLine)
- •Набор линий (DrawLines)
- •Рисование прямоугольника(DrawRectangle )
- •Набор прямоугольников (DrawRectangles )
- •Рисование многоугольника (DrawPolygon)
- •Рисование эллипса(DrawEllipse )
- •Результат работы метода DrawEllipse Рисование сегмента эллипса (DrawArc)
- •Рисование замкнутого сегмента эллипса(DrawPie)
- •Рисование кривых Безье (DrawBezier и DrawBeziers )
- •Рисование канонических сплайнов (DrawCurve и DrawClosedCurve)
- •Рисование закрашенных фигур.
- •Тема. Инструменты для рисования
- •Инструмент для рисования перо (Pen) и его свойства
- •Инструмент для рисования кисть (Brush)
- •Кисть SolidBrush
Тема Методы и свойства класса Graphics. Рисование геометрических фигур Рисование линии (DrawLine)
За рисование линий в C# отвечает метод DrawLine. Он рисует линию, соединяющую две точки с заданными координатами. Указанный метод может быть перегружен. Ниже (на слайде) указаны варианты перегрузки этого метода. Рассмотрим отдельно каждый вариант перегрузки см. слайд.
public void DrawLine(Pen, int, int, int, int); public void DrawLine(Pen, float, float, float, float);
public void DrawLine(Pen, Point, Point); public void DrawLine(Pen, PointF PointF);
Первый параметр во всех вариантах перегрузки задает инструмент для рисования линии — перо. Перья создаются как объекты класса Pen. Программно это будет выглядеть следующим образом:
Pen myPen = new Pen(Brushes.Aqua,5);
Здесь мы создали перо цвета Aqua толщиной 5 пикселов.
Остальные параметры перегруженных методов DrawLine задают координаты соединяемых точек. Эти координаты могут быть заданы как объекты класса Point и PointF, а также в виде целых чисел и чисел с плавающей десятичной точкой.
Для первых двух вариантов первая пара определяет координаты первой точки по горизонтальной и вертикальной оси, а вторая — координаты второй точки по этим же осям. Разница между первым и вторым методом заключается в использовании координат различных типов (целочисленных int и с плавающей десятичной точкой float). Для варианта целых чисел вызов методов будет выглядеть следующим образом.
g.DrawLine(myPen,10,100,200,100);
Для варианта с классом Point вызов метода будет выглядеть следующим образом.
Point myPoint1 = new Point(100, 100);
Point myPoint2 = new Point(200,100);
g.DrawLine((new Pen(Brushes.Red, 5)), myPoint1, myPoint2);
В классах Point и PointF определены свойства X и Y, задающие, соответственно, координаты точки по горизонтальной и вертикальной оси. При этом в классе Point эти свойства имеют целочисленные значения, а в классе PointF — значения с плавающей десятичной точкой.
Объединив описанные строки получим обработчик события Form1_Paint.
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen myPen = new Pen(Brushes.Aqua,5);
g.DrawLine(myPen,10,100,100,100);
Point myPoint1 = new Point(100, 100);
Point myPoint2 = new Point(200,100);
g.DrawLine((new Pen(Brushes.Red, 5)), myPoint1, myPoint2);
}
Результат работы программы представлен ниже.
Рис. Результат работы программы.
Задание. Напасать программу, которая бы выводила на экран картинку следующего вида см. слайд (рис). Для реализации использовать цикл и метод:
public
void
DrawLine(Pen,
int,
int,
int,
int);
Рис. Задание.
Набор линий (DrawLines)
В C# существует и другой способ нарисовать несколько линий. Этого можно достигнуть, вызвав один раз метод DrawLines, который позволит нарисовать сразу несколько прямых линий, соединенных между собой. По своей сути метод DrawLines позволяет соединить между собой несколько точек. Координаты этих точек по горизонтальной и вертикальной оси передаются методу через массив класса Point или PointF. Ниже представлены перегрузки метода DrawLines.
public void DrawLines(Pen, Point[]); public void DrawLines(Pen, PointF[];
Продемонстрируем работу метода DrawLines. Предположим, что нам необходимо нарисовать изображение следующего вида(рис.) см. слайд.
Рис. Задание на метод DrawLines.
Для решения задачи объявим в классе Form1 этого приложения мы создаем кисть pen для рисования линий и объявляем массив mypen.
Pen mypen = new Pen(Color.Red, 2);
Point[] points = new Point[50];
Далее в конструкторе формы инициализируем массив точек points, которые нужно соединить линиями.
for (int i = 0; i < 20; i++)
{
int x;
if (i % 2 == 0)
{
x = 10;
}
else
{
x = 400;
}
points[i] = new Point(x, 10 * i);
}
Координаты точек по горизонтальной оси зависят от того, является ли значение переменной цикла i четным или нечетным.
Обработчик события Form1_Paint будет иметь вид (см. слайд).
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.Clear(Color.White);
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawLines(mypen,points);
}
Результат работы программы приведен на (рис)(см. слайд).
Рис. Результат работы программы.
В приведенном коде появилась новая неизвестная строчка.
g.SmoothingMode = SmoothingMode.HighQuality;
Если сравнить два рисунка, то можно заметить, что линии на втором рисунке гладкие и не содержат ступенек (см. слайд). Это позволил сделать один из параметров контекста отображения, а именно параметр SmoothingMode. Этот параметр задает режим сглаживания при отображении линий. Стоит обратить внимание, что для его использования необходимо добавить пространство имен System.Drawing.Drawing2D в самом начале файла. Для чего используем ключевое слово using.(см. слайд)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
Стоит отметить, что использование сглаживания повышает качество изображения, однако приводит к уменьшению скорости рисования.