на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Разработка элемента управления для отображения векторных карт

Разработка элемента управления для отображения векторных карт

Введение

Сейчас существует огромное количество форматов для хранения изображений. Все они представляют собой решения для использования в конкретных задачах и целях. Все форматы для хранения изображений делятся на два больших класса: растровые изображения (растровая графика) и векторные изображения (векторная графика). У каждого из классов есть свои достоинства и недостатки. Однако следует отметить что векторные изображения являются отличным средством визуализации информации и удобны в использовании. В частности можно выделить векторные карты которые всё большую популярность. И действительно они оказываются просто не заменимы в случаях когда необходимо представить информацию об территориях объединенные по определённому признаку. Например страны, области распространения каких то видов живых существ. В этом случае можно использовать графическую раскраску регионов для представления имеющейся информации деля имеющиеся данные на уровни и сопоставляя каждому уровню цвет. Примером такой информации может быть плотность населения на данной области, или др. Именно заинтересованность в этой теме и подтолкнуло к идее создания элемента управления для отображения векторных карт с возможностью отображения информации.

1. Разработка и анализ технического задания

1.1 Цель и назначение разработки

Целью разработки является создание элемента управления для отображения карт, представляющих собой векторные изображений в формате EPS (Encapsulated PostScript), удобного и простого в использовании. Работа векторными картами предоставляет возможность визуального представления информации связанной с геополитикой, геологическими исследованиями.

1.2 Основание разработки

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

1.3 Область применения

Данный комплекс элементов управления может использоваться при разработке программного обеспечения для работы с векторными картами в формате EPS (Encapsulated PostScript).

1.4 Требования предъявляемые к проекту

-элемент управления должен обеспечивать необходимую функциональность для работы с векторными картами.

- простой и понятный интерфейс для построения приложений использующих этот элемент.

- использование современных технологий разработки программного обеспечения.

- расширяемость, возможность усовершенствования, на ряду с основным назначением.

- выводом векторных карт в формате EPS (Encapsulated PostScript), необходимо предусмотреть вывод дополнительной информации.

Элемент управления должен предоставлять следующие основные функции:

- масштабирование

- автомасштабирование в пределах видимой области

- расположение изображения в пределах видимой области

- перемещение изображения

- выделение замкнутых областей по щелчку мыши

- раскрашивание выделенной замкнутой области

- автораскрашивание

- раскрашивание с учётом дополнительной информации

1.5 Требования к программному и техническому обеспечению

Операционная система Windows XP и выше.

Microsoft.NET Framework SDK v1.1или выше

Microsoft Visual Studio.NET 2003 или выше

Pentium 4 1800 Мгц, 512 оперативной памяти, 2Мб на жёстком диске.

1.6 Анализ технического задания

Исходя из требований проекта и учитывая изученные на данный момент языки программирования выбор делался из следующего перечня языков: Visual Basic, Borland Delphi, Borland C++ Builder, Visual C++, Visual Studio.Net 2003 Visual C#. Язык Visual Basic очень прост в освоении но его возможности ограничены он скорее подходит для быстрого создания красивых приложений, и приложений использующих пакет Microsoft Office. Данный язык не подходит по функциональности и сложен для реализации предъявляемых требований. Borland C++ Builder представляет классический язык С++ с набором библиотек. Основным недостатком является моральное устаревание и отсутствие поддержки современных технологий. Язык С++ прекрасно переноситься на другие платформы в частности Linux но так как в Borland C++ Builder присутствуют собственные библиотеки не реализованные в других платформах что не возможно осуществить переноску даже с открытым кодом, что ставит под сомнение коммерческое использование компонента. Visual C++ тоже отличается наличием собственных библиотек что более сильно связывает его с ОС Windows. Конечно в последних версия есть поддержка Framework обозначаемая как `управляемый С', но зачем использовать что-то подогнанное. По этому этот язык не подходит нам. Borland Delphi очень хороший язык. Функционален, имеются достаточные инструменты для реализации нашего проекта, в последних версия имеется поддержка технологии.Net разработанной компанией Microsoft что повышает переносимость программного обеспечения на другие платформы, конечно с реализованной технологией.Net на этой платформе. Если сравнить его с Visual C#. То видны неоспоримые преимущества последнего. Также идёт соперничество между двумя с моей точки зрения наиболее перспективными языками С# и Java. С# - это язык программирования, синтаксис которого очень похож на синтаксис Java (но не идентичен ему). Например, в С# (как в Java) определение класса состоит из одного файла (*.cs), в отличие от C++, где определение класса разбито на заголовок (*.h) и реализацию (*.срр). Однако называть С# клоном Java было бы неверно. Как С#, так и Java основаны на синтаксических конструкциях C++. Если Java во многих отношениях можно назвать очищенной версией C++, то С# можно охарактеризовать как очищенную версию Java. Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства класс сов. Как C++', С# позволяет производить перегрузку операторов для созданных вами типов (Java не поддерживает ни ту, ни другую возможность). С# -- это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++. Подводя итоги, еще раз выделим основные особенности С#.

- Указатели больше не нужны! В программах на С#, как правило, нет необходимости в работе с ними (однако если вам это потребуется, пожалуйста, возможности для работы с указателями в вашем распоряжении).

- Управление памятью производится автоматически.

- В С# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.

- В С# осталась возможность перегружать операторы, унаследованные от C++. При этом значительная часть возникавших при этом сложностей ликвидирована.

- Предусмотрена полная поддержка использования программных интерфейсов. Однако в отличие от классического СОМ применение интерфейсов это не единственный способ работы с типами, используя различные двоичные модули..NET позволяет передавать объекты (как ссылки или как значения) через границы программных модулей.

- Также предусмотрена полная поддержка аспектно-ориентированных программных технологий (таких как атрибуты). Это позволяет присваивать типам характеристики (что во многом напоминает COM IDL) для описания в будущем поведения данной сущности. Возможно, самое важное, что необходимо сказать про язык С#, -- это то, что он генерирует код, предназначенный для выполнения только в среде выполнения. NET. Например, вы не сможете использовать С# для создания классического СОМ-сервера. Согласно терминологии Microsoft код, предназначенный для работы в среде выполнения.NET, -- это управляемый код (managed code).

2. Разработка архитектуры элемента управления

При разработке архитектуры было принято решение отдельно создать элемент управления который будет служить только для отображения векторных карт и хранения данных(цвет, набор координат замкнутых областей). Дополнительные элементы управления буду выдавать лишь набор цветов(выбранных по определённому алгоритму) для раскрашивания.

2.1 Основной элемент управления

При разработке элемента управления мы будем руководствоваться принципами Объектно-Ориентированного Программирования. Основная парадигма которого гласит: “Реши какие потребуются классы обеспечь полный набор операций ля каждого класса явно вырази общность через наследование”. В результате проведения объектной декомпозиции были выделены следующие классы:

Класс «элемент управления» CntrIm который наследуется от класса UserControl который предоставляет возможности создания элементов управления. Класс CntrIm выступует как класс в котором будет осуществляться отрисовка векторных изображений и обеспечиваться доступ к хранимой информации о изображении и вложенных объектах, осуществляется получение координат замкнутых областей из файла и передачу их в экземпляр класс MyMap для объединения в замкнутые области и хранения.

Класс MyMap. Для класса CntrIm является вложенным и будет являться своего рода диспетчером управляющим картой. Будет управлять вложенными объектами, осуществлять передачу необходимых данных в обоих направлениях, отвечать за систему координат, масштабирование изображения, переключение между выделенными областями, предоставление координат для отрисовки объектов на элементе управления. В нём будет хранится коллекция объектов обозначающих замкнутые области из которых составлена карта.

Класс PathD. Смысловая нагрузка этого класса это замкнутые области на векторных картах, которыми могут быть страны, регионы и д.р. Данный класс хранит коллекцию экземпляров класса PointD. Класс PointD является вложенным для класса PathD. Данный класс также хранит описание в какой цвет будет раскрашена данная замкнутая область. Он будет обеспечивать доступ к коллекции хранимых точек из которых состоят замкнутые области.

Класс PointD. Смысловая нагрузка этого класса это точка из которых создаются замкнутые области. Этот класс предназначен лишь для хранения координат полученных из файла. Иерархия представлена на Рис. 2.1

Рис. 2.1 Иерархия классов

2.2 Дополнительные элементы управления

Класс AutoColor. Взаимодействие этого класса с элементом управления представляет собой контрактную модель. Экземпляр класса AutoColor получает коллекцию областей для анализа (массив экземпляров класса PathD), анализирует данные и выдаёт массив экземпляров класса Color, то есть цвета в которые будут раскрашены области с учётом того что рядом расположенные области не будут одинаково раскрашены. Выбор цветов производится из условия оптимального раскрашивания. Массив экземпляров класса PathD хранится в экземпляре класса MyMap. Схема взаимодействия приведена на Рис. 2.2.1

Класс UserControl1. Является элементом управления унаследованным от класса UserControl. И создан для выдачи экземпляра класса Color то есть цвета в который будет окрашена выделенная в элементе управления CntrIm замкнутая область. Схема взаимодействия приседена на рисунку 2.2.2

Рис. 2.2.1 Схема взаимодействия c классом AutoColor

Класс SetDiapColor. Является элементом управления унаследованным от UserControl и предназначен для выдачи схемы раскраски замкнутых областей. Он получает количество замкнутых областей. В этом элементе управления каждой области присваивается число и задаются диапазоны для раскрашивания. В зависимости от этих параметров выдаётся массив типа Color. То есть номер экземпляра в массиве соответствует в какой цвет будет раскрашена замкнутая область.

Рис 2.2.2 Схема взаимодействия с классом UserControl1

Рис 2.2.3 Схема взаимодействия с классом SetDiapColor.

3. Разработка кода элемента управления

3.1 Класс PointD

Предназначен исключительно для хранения координат точек x и y и организации доступа к ним. Тип переменных в которых хранятся координаты определялся исходя из того что необходимо хранить числа с не менее чем 5ью знаками поле запятой.

Структура класса PointD:

public class PointD

{

private double x; //координата x

private double y; //координата y

public PointD() //конструктор по умолчанию

{ …

}

public PointD(double x,double y)

{…

}

public PuintD(PointD pd) //конструктор копирования

{…

}

public double X // свойство для доступа к координате X

{…

}

public double Y //свойство для доступа к координате Y

{…

}

3.2 Класс PathD

Класс PathD несёт смысловую нагрузку и представляет собой замкнутую область. В его структуру включен массив типа PointD в который добавляются точки которые формируют замкнутую область. Включены поля хранящие количество точек в замкнутой области, координаты центра замкнутой области, цвет замкнутой области. Центр области вычисляется по формуле Xc=(x1+x2+…+xn)/n, Yc=(y1+y2+…+yn)/n, где Xc,Yc-координаты центра фигуры, n-количество точек замкнутой фигуры, x1..xn координаты по оси X точек 1..n, y1..yn координаты по оси Y точек 1..n. Добавление точек осуществляется так: создается массив длинной n+1 экземпляры класса PoitD копируются в новый массив, в последний элемент массива записывается новый экземпляр класса PoitD. Старый массив уничтожается «сборщиком мусора» элементом среды в которой идёт выполнение.

Структура класса PathD

public class PathD

{

private int length; //количество точек в замкнутой области

private PointD[] msPtd; //массив точек

private PointD centr; //центр фигуры

private Color clr; //цвет в который будет раскрашена область при //при отрисовке

public PathD()

{…

}

public void AddPoint(PointD pointD) //метод добавляющий точку к

//области

{ …

}

public int Length

{ …

}

public PointD[] PathPoints //свойство выдающее массив точек области

{…

}

public PointD Centr //свойство выдающее центр области

{ …

}

public Color ColorP //свойство для получения и установки цвета

{ …

}

}

3.3 Класс MyMap

Страницы: 1, 2, 3, 4, 5



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.