Разработка модуля для автоматического размещения текстовых надписей на рисунке в векторном графическом редакторе

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Введение

 

Цель курсовой работы - разработка модуля для компьютерной программы - векторного графического редактора. Общая задача модуля - автоматическое размещение текстовых надписей на рисунке.

Необходимо создать программный интерфейс позволяющий, с помощью мыши создавать произвольные полигональные объекты, а также программный модуль для определения центра масс полигонального объекта.

Изображение должно выводиться на стандартную форму Visual Basic. Работа с графикой осуществляется специальной подсистемой опирающейся на подсистему win32 API, конкретно библиотеку gdi32.dll.

В рамках данной работы будут реализованы следующие задачи:

1.Рассмотреть возможные варианты решения в рамках поставленных условий.

2.Теоретическое обоснование методов и приемов решения поставленной задачи.

.Программная реализация.

.Подготовка отчета.

 

Обзор средств разработки и технологий

 

Условиями курсового проекта оговорена среда разработки Visual Basic 6.0, а также технология Win32 API.

Язык программирования Visual Basic.

Visual Basic представляет собой язык программирования высокого уровня. В составе интегрированной среды разработки (IDE) является языком для быстрого создания пользовательских приложений. IDE VB позволяет визуально проектировать интерфейс, предоставляет простой доступ к БД используя установленные в системе драйвера доступа к данным.

Visual Basic есть функционально завершенное средство для разработки приложений от интерфейса до бизнес логики, имеет большой набор встроенных функций разного назначения. Однако для решения некоторых прикладных задач стандартных средств языка бывает недостаточно, тогда программист имеет возможность обратиться к подсистеме win32 API для осуществления вызова к внутренним функциям операционной системы.

Набор встроенных функций VB достаточно обширен и многие из них созданы для решения типичных задач с которыми приходится сталкиваться программисту. Однако в случае нестандартных задач часто возникает ситуация когда применение высокоуровневых функций затруднено. В этом случае и приходит на помощь система библиотек Win32 API. Функции библиотеки есть базовые функции операционной системы и соответственно являются наиболее гибким инструментом для реализации поставленной задачи в среде Windows.

 

Подсистема Win32 API

 

Интерфейс прикладного программирования Win32 API (Application Programming Interface) - это программный интерфейс, который используется для управления операционной системой Windows. Win32 API состоит из набора функций и подпрограмм, поставляемых в виде динамически подключаемых библиотек (Dynamic Link Libraries - DLL), которые обеспечивают программный доступ к возможностям операционной системы.

Win32 API может интенсивно использоваться для расширения возможностей Visual Basic. Для использования некоторых вызовов API пользователю нет необходимости вникать в работу операционной системы.

 

Теоретическое обоснование методов и приемов решения поставленной задачи

 

Механизм создания полигонального объекта.

Необходимо создать полигон. Чтобы однозначно задать полигон в памяти программы необходимо указать координаты всех его точек. Проще всего задать координаты относительно левого верхнего угла устройства на котором будет отображен полигон.

Для ввода координат используем событие MouseDown объекта PictureBox, который представляет собой рабочее поле программы. Процедура - обработчик события получить координаты места щелчка, а также номер кнопки мыши.

Полученные координаты необходимо сохранить для последующих расчетов. Поверхностный обзор средств моделирования окружающей действительности доступные Visual Basic выделяет три возможных варианта решения задачи.

1.Хранение в виде массива из двух элементов Array(x, y), который в свою очередь будет являться элементом массива содержащего все вершины полигона.

2.Хранение координат всех вершин полигона в двух массивах, отдельно для x, отдельно для y.

.Хранение координат в пользовательском типе данных в одном массиве.

Первый вариант недостаточно удобен ввиду низкой производительности кода для работы со вложенным массивом. Недостаточно понятный и наглядный вариант.

Второй вариант имеет наиболее высокую производительность, однако наиболее целесообразно будет применить для этой цели специальный пользовательский тип, принятый по умолчанию в Win32 API:

Public type POINTAPI x as Long y as Long type

Записываем координаты в структуру и сохраняем её в специальном массиве вершин полигона.

После ввода каждой новой вершины производим отрисовку сцены.

При перемещении мыши по полю пользователь наблюдает фантомную вершину в точке нахождения мыши, а также фантомное ребро полигона. После создания хотя бы трех точек, между первой и последней точкой полигона отображается штрихованная линия, показывающая ребро последнее ребро полигона, в случае если ввод будет завершен.

Ввод полигона завершается путем двойного щелчка на поле, таким образом устанавливается последняя вершина и происходит её соединение с первой.

 

Нахождение центра масс

 

В соответствии с условиями работы, линия относительно которой позиционируется надпись должна быть проведена через центр масс полигона.

Для нахождения центра масс выпуклого полигона необходимо знать координаты всех его вершин.

Тогда координаты центра масс определяться как сумма координат вершин отнесенная к их количеству, другими словами среднее арифметич?/p>