
- •Графические возможности интегрированной среды Visual Studio и основные приёмы разработки программ под Windows.
- •1. Теоретическая часть.
- •1.1. Контекст графического устройства
- •1.1.2. Контексты устройств и графический объект
- •1.1.3. Пример рисования форм
- •1.3. Обзор пространства имен System.Drawing
- •1.3.1. Служебные типы System.Drawing
- •1.3.4. Класс Region
- •1.4. Класс Graphics
- •1.5. Сеансы Paint
- •1.6. Объявление клиентской области формы недействительной
- •1.7. Получение объекта Graphics вне обработчика события Paint
- •1.8. Удаление объекта Graphics
- •1.9. Блок-схемы алгоритмов функционирования.
- •2. Формирование контура фигур
- •2.1. Возможные способы формирования линий.
- •3. Разработка приложения.
- •3.1. Конструирование главной формы
- •3.2. Реализация первого способа рисования.
- •3.3. Реализация второго способа.
- •4. Задание на лабораторную работу
- •5. Содержание отчета по лабораторной работе.
1.9. Блок-схемы алгоритмов функционирования.
Прежде чем приступать к разработке программы необходимо представить и формально описать ее алгоритм функционирования. Понятно, что на начальном этапе достаточно трудно представить себе алгоритм функционирования будущего приложения во всех деталях и с учетом особенностей его реализации. Скорее всего, этот алгоритм будет описывать поведение разрабатываемого приложения или функционального блока только на самом общем уровне. Однако, по мере продвижения процесса разработки он будет постепенно детализироваться с учетом особенностей его реализации. Таким образом, на начальном этапе разработки приложения его алгоритм функционирования представляет собой описание основных (главных) особенностей поведения. Ошибки в разработке алгоритма функционирования на этом этапе ведут к большим и непроизводительным затратам труда программиста на последующих этапах разработки приложений. А часто и вообще к его повторной разработке с "чистого" листа. Именно поэтому программисты уделяют особое внимание алгоритмам функционирования разрабатываемых программных приложений.
Обычно алгоритма изображаются в виде соотвествующих блок-схем, которые в самом простом варианте представляют собой набор условных графических изображений соединенных между собой логических и операционных блоков (Рис.2).
Рис.2. Основные элементы блок-схем алгоритмов.
Использование этих основных элементов позволяет составлять достаточно понятное представление о функциональных возможностях и особенностей поведения разрабатываемых приложений или их составных частей. На рис.3 представлен пример фрагмента алгоритма функционального блока, описывающего процесс управления курсором при его перемещении по экрану монитора.
Рис.3. Блок-схема алгоритма управления курсором
2. Формирование контура фигур
2.1. Возможные способы формирования линий.
При формировании линий в окне приложения обычно применяют один из двух способов:
2.1.1. Первый способ заключается в том, что пользователь (с помощью курсора) указывает место, где должна находиться очередная вершина многоугольника, и, нажимая на клавишу (например, на левую клавишу мыши), сообщает приложению, что фиксируется очередная вершина многоугольника. После чего вырисовывается линия, соединяющая предпоследнюю и последнюю вершины многоугольника. Процесс продолжается то тех пор, пока пользователь не сообщит программе о том, что он завершает формирование фигуры. Для этой цели можно воспользоваться резервированием и последующим использованием специальной клавиши (например, правой клавиши мыши) или использовать некоторый особый признак, интерпретируемый как окончание процесса формирования фигуры.
Таким образом, достаточно, чтобы приложение соответствующим образом реагировало бы только на одно событие, поступающее от манипулятора типа "мышь" при нажатии (OnMouseDown), например, на ее левую клавишу. Условно этот способ можно назвать "поточечным".
2.1.2. Второй способ заключается в том, чтобы формировать новые вершины таким образом, чтобы можно было непосредственно наблюдать, как будет выглядеть изображение последней грани контура многоугольной фигуры, если его последняя вершина находилась бы на том месте, где в настоящий момент находится курсор. Такой подход предполагает, формирование линии, изображающей формируемую грань многоугольника, с координатами в точках, где была зафиксирована его последняя вершина и текущего положения курсора. При изменении положения курсора изменяет своё положение и соответствующая грань многоугольника. В этом случае сама линия, изображающая эту последнюю грань, выглядит как резиновая, надёжно закреплённая на одном конце и свободно перемещаясь вслед за курсором на её втором конце. Такой режим рисования получил название "Резинка".
Р
ис.3.
Рисование контура фигуры в режиме
"Резинка".
В данном случае приложение должно быть способно реагировать уже на два события, поступающее от манипулятора типа "мышь" и возникающее при нажатии на ее левую клавишу (MouseDown) и при ее перемещении (MouseMove).
Вполне очевидно, что для реализации обоих способов вырисовывания фигур в объявление класса формы, требуется ввести некоторый объект, предназначенный для временного хранения координат уже зафиксированных вершин многоугольника. В качестве такого хранилища можно использовать обычный список. Для этого в классе формы достаточно объявить переменную типа List. Кроме этого нам, очевидно, потребуется вспомогательная переменная, хранящая последнее положение курсора и координаты последней вершины формируемого многоугольника.