![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Разработка программы рисования замкнутых многоугольников на языке С++, с использованием библиотеки VCL |
Министерство Образования Республики Беларусь УО “Витебский Государственный Технологический Университет&quo ;Пояснительная записка к курсовому проекту на тему “Разработка программы рисования замкнутых многоугольников на языке С , с использованием библиотеки VCL&quo ;Витебск - 2009 СодержаниеВведение. Разработка интерфейса приложения Разработка алгоритма работы приложения, его реализация на языке С Заключение Список литературы Введение.В записке приведено описание программы, разработанной в соответствии с заданием на курсовое проектирование по теме “Разработка программы рисования замкнутых многоугольников на языке С , с использованием библиотеки VCL&quo ;. Программа предназначена для рисования различных правильных многоугольников. Разработка программы производилась в среде C Builder 6, т.к данная среда удобна для разработки, интерфейсы, создаваемые C Builder 6 наглядны и просты для использования. Результаты тестирования подтверждают, что программа правильно выполняет все реализованные, в соответствии с заданием, функции. Разработка интерфейса приложенияПод графическим интерфейсом пользователя (Graphical User I erface - GUI) подразумевается тип экранного представления, при котором пользователь может выбирать команды, запускать задачи и просматривать списки файлов, указывая на пиктограммы или пункты в списках меню, показанных на экране. Действия могут, как правило, выполняться с помощью мыши, либо нажатием клавиш на клавиатуре. Типичным примером графического интерфейса пользователя является Wi dows. C Builder предоставляет разработчику приложения широкие возможности быстрого и качественного проектирования графического интерфейса пользователя - различных окон, кнопок, меню и т.д. Интерфейс программы разрабатывался в стиле простейшего графического редактора.На панели инструментов расположатся элементы для работы непосредственно с холстом. Так, в результате, нескольких проб, собираем форму которая нас удовлетворяет. Исследование классов библиотеки VCL, используемых в приложении. Библиотека визуальных компонентов - VCL-библиотека (Visual Compo e Library) - является репозитарием компонентов, используемых для создания приложений с помощью C Builder. Компонентом называется объект, используемый для создания программы, - флажок, комбинированный список или рисунок. Эти компоненты выбираются с помощью щелчка левой кнопкой мыши и перемещаются в рабочую область. Компоненты VCL-библиотеки представляют собой код, который скомпилирован для выполнения определенных операций, что избавляет разработчика от необходимости всякий раз создавать его заново. Все компоненты обладают свойствами, которыми можно управлять с помощью кода или пакета C Builder. Свойства компонента определяют способ его работы, внешний вид, набор функциональных возможностей и т.д. Компоненты используемые для построения нашего интерфейса можно представить в виде следующего списка: Form - форма, окно, которое в большинстве случаев является пользовательским интерфейсом создаваемого приложения. Mai Me u - не визуальный компонент, главное меню. Ope Dialog - предназначен для создания окна диалога &quo ;Открыть файл&quo ;.
SaveDialog - предназначен для создания окна диалога &quo ;Сохранить файл&quo ;. Pa el - является контейнером для группирования органов управления. Label - отображение текста, который не изменяется пользователем. Никакого оформления текста не предусмотрено, кроме цвета метки и текста. Edi - отображение, ввод и редактирование однострочных текстов. UpDow - кнопка-счетчик, в сочетании с компонентами Edi и другими позволяющая вводить цифровую информацию. RadioGroup - комбинация группового окна GroupBox с набором радиокнопок RadioBu o ; служит специально для создания групп радиокнопок. Можно размещать в компоненте несколько радиокнопок, но никакие другие органы управления не разрешены. RadioBu o - предлагают пользователю набор альтернатив, из которых выбирается одна. Набор реализуется требуемым количеством радиокнопок, размещенных в одном контейнере. Image - используется для отображения графики: пиктограмм, битовых матриц и метафайлов. S a usBar - представляет собой ряд панелей, отображающих полосу состояния в стиле Wi dows. Обычно эта полоса размещается внизу формы. Разработка алгоритма работы приложения, его реализация на языке С Целью данной работы является разработка программы рисования замкнутых многоугольников с помощью объектно-ориентированного языка программирования, с использованием его графических функций и методов. В разработанной программе реализованы следующие возможности: помещение фигуры на холст (количество граней задается численно, положение на холсте - с помощью мыши); вращение фигур на холсте (положение на холсте центра вращения указывается с помощью мыши, угол задается численно); перемещение фигур на холсте с помощью; очистку холста от фигур; сохранение в файл коллекции фигур; загрузка коллекции фигур из файла в двух вариантах: дополнение, или полная замена уже имеющейся на холсте коллекции (предусмотрена фильтрация файлов нужного типа в диалоге &quo ;Открытие файла&quo ;). Созданная программа в процессе деятельности может быть представлена рядом состояний, которые осуществляют те или иные действия. В программе можно выделить некоторое начальное и конечное состояние. Анализ системы следует начать с жизненного цикла: вначале работы программы пользователь создает или открывает (импортирует) коллекцию фигур, далее следует выбор одного из действий: создание, перемещение и поворот фигуры: создание фигуры - пользователю необходимо сначала задать количество углов и размер, после чего произвести щелчок левой кнопкой мыши по холсту, в результате чего на указанном месте появится заданный многоугольник; перемещение фигуры - пользователю необходимо просто навести курсор на фигуру, которую он хочет переместить и нажать левую кнопку мыши, после чего переместить курсор в нужную позицию и отпустить кнопку. вращение фигуры - пользователю необходимо сначала задать угол поворота, после чего произвести щелчок левой кнопкой мыши по фигуре в месте, где пользователь хочет расположить центр вращения. После выполнения одного, либо нескольких из вышеописанных действий пользователь может завершить работу, предварительно сохранив в файл коллекцию фигур.
Для реализации поставленных задач был написан класс Polygo e, которым описываются все многоугольники на форме. Класс реализован следующим образом:class Polygo e { frie d os ream &opera or&l ;&l ; (os ream &ou pu , Polygo e polygo ); frie d is ream &opera or&g ;&g ; (is ream &i pu , Polygo e &polygo ); priva e: i ; double size; Poi ce er; Poi fulcrum; i le X,le Y; double a gle; public: Polygo e (); Polygo e (i , double size, Poi ce er); Polygo e (i , double size, Poi ce er, Poi fulcrum, double a gle); i ge Am A gles (); double ge Size (); Poi ge Ce er (); Poi ge Fulcrum (); double ge A gle (); Poi ge Poi (); void se Am A gles (i ); void se Size (double size); void se CorCe er ( Poi ce er); void se Fulcrum ( Poi fulcrum); void se A gle (double a gle); };Класс имеет несколько закрытых переменных для хранения значений количества углов, размера, координат центра и точки вращения, а также угла, на который повернут многоугольник относительно точки вращения. Далее идет вполне стандартное описание конструкторов и необходимых нам функций, предназначение большинства из них не вызывает вопросов, т.к они являются обычными геттерами и сеттерами, которые возвращают нам значения закрытых переменных. Интересной для рассмотрения является функция ge Poi (), возвращающая указатель на массив типа Poi , хранящий в себе массив точек (вершин), многоугольника. Рассмотрим ее реализацию: Poi Polygo e:: ge Poi () { Poi poi = ew Poi ; double alpha = ALPHA FULL/ his-&g ; ; for (i i=0; i&l ; ; i ) { i x = his-&g ;ce er. x his-&g ;size cos (alpha M PI/ALPHA HALF); i y = his-&g ;ce er. y his-&g ;size si (alpha M PI/ALPHA HALF); poi = Poi (x,y); alpha = ALPHA FULL/ ; } if (a gle) { for (i i=0; i&l ; ; i ) { double R = sqr (pow ( his-&g ;fulcrum. x-poi . y,2)); double be a = (ALPHA HALF/M PI) acos ( (poi . x- his-&g ;fulcrum. x) /R); if ( his-&g ;fulcrum. y&g ;poi . y) be a = ALPHA FULL - be a; double gamma = be a - his-&g ;a gle; i x = his-&g ;fulcrum. x R cos (gamma M PI/ALPHA HALF); i y = his-&g ;fulcrum. y R si (gamma M PI/ALPHA HALF); poi = Poi (x,y); } } re ur poi ; }Для нахождения вершин многоугольника воспользуемся полярной системой координат с центром в центре многоугольника. В первой строке данной функции происходит создание массива типа Poi , размерностью, равной количества углов у многоугольника. Начиная со следующей строки, находится полярный угол и запускается цикл, в котором находятся вершины многоугольника в системе с центром в центре многоугольника, с использованием полярных координат, к этим координатам прибавляется смещение центра относительно начала координат. Далее, если имеется угол, на который необходимо повернуть фигуру, то запускается цикл, в котором, находится длинна вектора с началом в точке центра вращения, обратным преобразованием находится полярный угол между вектором и плоскостью вращения. К найденному углу прибавляется угол, на который необходимо повернуть многоугольник, и осуществляется преобразование, из полярных координат в декартовы координаты. Фигуры в памяти хранятся с использованием класса vec or. Класс vec or является очень удобным методом для хранения неизвестного числа переменных в памяти.
Эта схема дает логическое представление о ядре, хотя в действительности в структуре ядра имеются отклонения от модели, поскольку отдельные модули испытывают внутреннее воздействие со стороны других модулей. Схема на Рисунке 2.1 имеет три уровня: уровень пользователя, уровень ядра и уровень аппаратуры. Обращения к операционной системе и библиотеки составляют границу между пользовательскими программами и ядром, проведенную на Рисунке 1.1. Обращения к операционной системе выглядят так же, как обычные вызовы функций в программах на языке Си, и библиотеки устанавливают соответствие между этими вызовами функций и элементарными системными операциями, о чем более подробно см. в главе 6. При этом программы на ассемблере могут обращаться к операционной системе непосредственно, без использования библиотеки системных вызовов. Программы часто обращаются к другим библиотекам, таким как библиотека стандартных подпрограмм ввода-вывода, достигая тем самым более полного использования системных услуг. Для этого во время компиляции библиотеки связываются с программами и частично включаются в программу пользователя
1. Проект разработки программы-калькулятора CalcKurs на языке программирования Pascal
2. Разработка программы на языке LISP для построения кривых Серпинского i-го порядка
3. Разработка программ с использованием динамической памяти
4. Разработка программы генерации тестов из базы данных на языке РНР
5. Разработка программы на языке Borland Object Pascal (Ide Borland Delphi)
11. Разработка программы стимулирования сбыта
12. Разработка программы туристского путешествия в Великом Новгороде
13. Разработка программы совершенствования организации международных перевозок
14. Разработка технологического процесса изготовления детали с использованием станков с ЧПУ
18. Разработка программы для построения кривых Серпинского i-го порядка
19. Разработка бизнес-плана на производство и использование концентрированного органического удобрения
20. Алгоритмические языки: использование процедур при работе с двумерными массивами
21. Программа Macromedia Flash и ее использование
26. Разработка программы автоматизации процесса подбора запчастей для ремонта автомобилей
27. Разработка программы для решения систем линейных уравнений
28. Разработка программы игры "Собери картинку"
29. Разработка программы на Delphi
30. Разработка программы представления табличных данных в виде диаграммы прямоугольников
31. Разработка программы решения системы линейных уравнений
32. Разработка программы, генерирующей пароли пользователей
33. Разработка программы-компилятора
34. Разработка программы определительных испытаний
35. Разработка программы маркетингового исследования для ОАО МЖК "Краснодарский"
36. Разработка программы продвижения новой продукции
37. Разработка программы стимулирования сбыта продукции предприятия
41. Разработка программы "Атамекен". Направление "Шапар"
42. Разработка игровой программы на языке программирования Turbo Pascal
43. Разработка системной поддержки вызова программ,реализованных на языке Fortran, из среды Java
44. Изучение английского языка с использованием компьютерной программы "English Puzzle"
47. Разработка рекламной программы для страховой компании
48. Использование интегрированных курсов при изучении иностранного языка
52. Разработка синтаксического распознавателя вычисляемого оператора перехода языка FORTRAN
53. Программа сложной структуры с использованием меню
59. Образовательная программа школы: назначение, содержание, участие учителей и учащихся в ее разработке
61. Использование кабинета для внеклассной работы по иностранному языку
63. Прогнозирование банкротства и разработка антикризисной программы предприятия
64. Использование компьютерных программ для анализа финансового состояния организации
66. Программа курса «Язык рекламы»
67. Разработка маркетинговой программы
68. Разработка нового метода использования нефтяных скважин
73. Рекомендации по разработке рекламной программы
75. Использование Интернет-ресурсов на уроках английского языка
77. Программы вступительных экзаменов по иностранным языкам в 2004г (МГУ)
78. Использование информационных технологий в изучении английского языка в школе
79. Разработка модулей программы /Укр./
80. Игровая программа TETRIS на языке Паскаль
81. Разработка алгоритмов и диалоговых программ автоматизированного формирования
82. Разработка игровой программы
84. Программа обработки данных в библиотеке
85. Использование модели briefcase при разработке приложений баз данных
90. Использование компьютера в реализации школьных программ
92. Разработки мероприятий и уроков по английскому языку
93. Интенсификация обучения иностранному языку с использованием компьютерных технологий
94. Использование интернета в обучении иностранному языку
97. Использование JAVA-технологий для разработки графических приложений
98. Использование масок слоев и работа с текстовыми слоями в программе Adobe Photoshop
99. Использование программы Outlook Express для работы с электронной почтой