- •Содержание
- •Тема 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
Рисование канонических сплайнов (DrawCurve и DrawClosedCurve)
В отличие от только что рассмотренных кривых линий Безье, линии канонического или обычного сплайна проходит через все заданные точки. Для рисования обычных сплайнов предусмотрены группы перегруженных методов методы DrawCurve и DrawClosedCurve. Первая группа методов рисует незамкнутую кривую линию (открытый сплайн), а второй — замкнутую (закрытый сплайн).
В простейшем случае методам передается перо и массив соединяемых точек.
public void DrawCurve(Pen, Point[]); public void DrawCurve(Pen, PointF[]);
public void DrawCurveClosed(Pen, Point[]); public void DrawCurveClosed(Pen, PointF[]);
Рассмотрим работу методов DrawCurve и DrawCurveClosed на примере предыдущей задачи.
Вызов метода DrawCurve выглядит следующим образом.
g.DrawCurve(myPen,myPoint);
Результат работы метода представлен на рис.
Рис. Работа метода DrawCurve
Вызов метода DrawCurveClosed имеет вид.
g.DrawClosedCurve(myPen, myPoint);
Результат работы метода DrawClosedCurve представлен на рис.
Рис. Результат работы метода DrawClosedCurve
Обработчик события Form1_Paint имеет вид.
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen myPen = new Pen(Color.Blue,2);
g.Clear(Color.White);
Point[] myPoint =
{
new Point(10, 100),
new Point(50, 90),
new Point(110, 190),
new Point(190, 60)
};
g.DrawCurve(myPen,myPoint);
g.DrawClosedCurve(myPen, myPoint);
}
Существуют версии методов, позволяющие дополнительно задать так называемую жесткость сплайна. Жесткость задается в виде третьего дополнительного параметра:
public void DrawCurve(Pen, Point[], float); public void DrawCurve(Pen, PointF[], float);
По умолчанию значение жесткости равно 0,5. При увеличении этого параметра увеличиваются изгибы кривой линии. При жесткости большей 1 или меньшей 0 кривая может превратиться в петлю.
Решим предыдущую задачу при помощи указанных методов, жесткость равна 1,5 и 0.
Рис. Результат работы DrawCurve при жесткости 1.5 и 0
Методу DrawClosedCurve дополнительно задается параметр типа FillMode. Приложение заполняет внутреннюю часть контура с помощью одного из двух режимов заливки: чередование или поворот. Режим определяет, как производится заполнение и отсечение для внутренней части замкнутой фигуры.
По умолчанию используется режим Alternate. Чтобы определить внутренние части замкнутых фигур в режиме чередования, рисуется линия из произвольной начальной точки контура к некоторой точке, которая явно расположена вне контура. Если линия пересекает нечетное число сегментов контура, начальная точка находится внутри замкнутой области и, следовательно, является частью области заполнения или отсечения. Четное число пересечений означает, что точка не находится в области, которая должна быть заполнена или отсечена. Незамкнутая фигура заполняется или отсекается путем использования линии, соединяющей последнюю и первую точки контура.
Режим Winding учитывает направление сегментов контура на каждом пересечении. В этом режиме добавляется единица для каждого пересечения по часовой стрелке и вычитается единица для каждого пересечения против часовой стрелки. Если результат отличен от нуля, точка считается расположенной внутри области заполнения или отсечения. Нулевой результат означает нахождение точки вне области заполнения или отсечения.
Фигура считается направленной по часовой стрелке или против часовой стрелки в зависимости от порядка, в котором рисуются сегменты фигуры.
public void DrawClosedCurve(Pen, Point[], float, FillMode); public void DrawClosedCurve(Pen, PointF[], float, FillMode);