Реферат: Визуализация контактных преобразований в среде Visual C++ 6
Глава 2. Использование функций рисования.
o Создание объекта контекста устройства.
o Выбор инструментов рисования.
o Выбор стандартных инструментов рисования.
o Создание инструментов рисования.
Глава 3.Печать и предварительный просмотр.
o Основы печати и предварительный просмотр.
o Усовершенствованная печать.
Заключение.
Литература и источники.
Тема моей бакалаврской работы – «Визуализация контактных преобразований (в среде Visual C++ 6.0)». Моя программа будет рисовать два эллипса с определёнными аргументами, задаваемыми пользователем через диалоговые окна. Также программа позволяет выводить изображения на принтер и осуществлять предварительный просмотр.Visual C++ 6.0 - это сравнительно новая система программирования, которая снискала уважение и популярность по всему миру. С её помощью легко и удобно писать различные типы программ для Windows. Шестая версия системы стала ещё более модной и удобной и избавляет от большого количества рутинной работы по набивке и копированию стандартных фрагментов подавляющего большинства программ. Безусловно, сердцевиной системы, во многом определяющей её мощь и гибкость , является библиотека классов MFC (Microsoft Foundation Classes – базовые классы Microsoft).
Новый 32-разрядный компилятор Microsoft Visual C++ 6.0 для Windows NT и Windows 95 - одна из составных частей мощного пакета компиляторов Developer Sudio, в который вхолят новейшие версии таких известных программных продуктов, как Visual Basic, Visual J++, Visual FoxPro...
Система программирования Visual C++ - один из наиболее полных и совершенных продуктов, предназначенных для разработки программного обеспечения. Это высокоскоростная и удобная для программирования система, предлагающая широкий набор разнообразных инструментов проектирования для любого стиля программирования.Новые компоненты содержат средства для программирования приложений, улучшенную реализацию ActiveX и Internet, дополнительные возможности разработки баз данных, а также новые архитектуры приложений и элементы взаимодействия между пользователями. Изучение правил применения данной системы программирования (часто очень не простых, на первый взгляд) может вас испугать, как это произошло со мной при первом знакомстве со средой Visual C++.
Глава 1. Создание графического интерфейса.
Для создания моей программы мне потребуется программирование графического интерфейса (GUI- Graphical User Interface). В программах с графическим интерфейсом можно создавать одно и более окон с элементами интерфейса (меню, панели инструментов, строки состояния, списки, полосы прокрутки и тд). Данные программы могут выводить рисунки, растровые изображения и текст с использованием большого набора шрифтов. Я буду создавать свою программу, используя мастер генерации приложений App Wizard и библиотеки MFC.
Существует несколько способов написания программ с графическим интерфейсом с помощью Visual C++. Во-первых – на языке С или С++ с непосредственным обращением к основным функциям Win32 API, которые являются частью операционных систем Windows. При таком подходе требуется написать множество строк программного кода, прежде чем перейти к решению целевой задачи разрабатываемого приложения.
Во-вторых – с помощью библиотеки MFC, содержащей большой набор готовых классов и вспомогательный код для выполнения стандартных задач программирования в среде Windows (например, создания окон и обработки сообщений). Кроме того, MFC используется для быстрого добавления в программы панелей инструментов, многопанельных окон поддержки OLE. Применяется для создания элементов, которые используются программными компонентами и отображаются в Web-браузерах и других приложениях. Использование MFC позволяет упростить программы с графическим интерфейсом, что значительно облегчит процесс программирования. Отметим: функции MFC содержат вызовы функций Win32 API. Говорят, что Win32 API «упакован» в библиотеку MFC, представляющую более высокоуровневые и переносимые средства программного интерфейса. Кроме того, в MFC-программах можно свободно вызывать функции Win32 API, сохраняя возможность использования этого интерфейса.
В-третьих – на языке С++ с использованием библиотеки MFC и различных мастеров. Мастер AppWizard используется для генерации основы исходных файлов программ. Аналогично, мастер AppWizard генерирует основную часть кода для определения производных классов и обработчиков сообщений, настройки библиотеки MFC, управления диалоговыми окнами, а также выполнения других задач. Заметьте: возможности мастеров не ограничиваются генерацией простых оболочек программ. Они позволяют создавать программы с большим набором сложных компонентов. К таковым относятся панели инструментов, строки состояния, контекстная справка, объекты OLE, средства доступа к базам данных и даже законченные меню с частично или полностью функционирующими командами открытия и сохранения файлов, печати, предварительного просмотра печати и выполнения других задач. После генерации основного кода программы с помощью мастера добавьте собственный код, определяющий логику работы программы
Преимущество третьего подхода состоит в использовании не только уже написанного кода MFC, но и сгенерированного исходного кода, позволяющего решить многие рутинные задачи программирования. Библиотека MFC и матера освобождают нас от необходимости создавать средства визуального интерфейса вручную и обеспечивают соответствие этого интерфейса требованиям MicroSoft.
Генерация исходного кода.
Для генерации программы с помощью AppWizard создаётся новый проект необходимого типа. Затем в последовательности диалоговых окон, отображаемых мастером, задаются требуемые характеристики программы. Запускаем Developer Studio и выполняем следующие шаги:
1) Выбираем в меню File команду New. В результате отобразится
диалоговое окно New.
2) Открываем вкладку Projects (если она не отображена), чтобы можно было создать новый проект.
3) В списке типов проекта выбираем “MFC AppWizard(Exe)”. Это приведёт к тому, что мастер AppWizard сначала предложит ввести необходимую информацию, а затем создаст основу кода MFC-программы.
4) Вводим имя Ellipse в поле Project Name. Visual C++ присвоит новому проекту и связанной с ним рабочей области имя Ellipse.
5) В поле Location задаём путь к папке с файлами, т.е. к каталогу проекта. Можно принять стандартный каталог, указанный в этом поле. Стандартному каталогу присваивается то же имя, что и рабочей области – Ellipse.
6) Чтобы завершить работу с вкладкой Projects диалогового окна New, убедитесь, что в поле Platforms отмечен пункт Win32. До тех пор, пока не будет установлена версия Visual C++ со средствами кросс-платформенной разработки, Win32 останется единственной опцией в этой области.
7) Щелкаем на кнопке ОК в диалоговом окне. Отобразится первое из диалоговых окон мастера AppWizard, помеченное “MFC AppWizard – Step 1”. В параметрах мастера AppWizard, выбираемых по умолчанию, будет указано стандартное значение.
8) В диалоговом окне выбираем тип приложения Single Document, отмечаем стандартный параметр Document/View Architecture Support и задаём поддержку английского языка. Выбор типа приложения Single Document определяет то, что AppWizard генерирует приложения с однооконным интерфейсом (Single Document Interface – SDI), отображающее единственное окно документа. Задание параметра Document/View Architecture Support приведёт к тому, что мастер
AppWizard сгенерирует отдельные классы для хранения и отображения данных программы, а также код для чтения и записи данных на диске. Щёлкаем Next для перехода к следующему диалоговому окну.
9) Чтобы исключить из программы поддержку баз данных, в диалоговом окне выбираем пункт None. Щёлкаем Next для перехода к следующему диалоговому окну.
10) В диалоговом окне выбираем пункт None чтобы исключить из программы поддержку составных документов. Убираем опцию Automation, чтобы устранить поддержку автоматизации. Щелкаем Next, чтобы перейти к следующему диалоговому окну.
11) В диалоговом окне выбираем поддержку печати (Printing and Print preview), панель инструментов (Docking toolbar), строку состояния (Initial status bar)и поддержку помощи (Context-sensitive Help), а также 3D controls. Щёлкаем Next, чтобы перейти к следующему диалоговому окну.
12) Чтобы сгенерировать для программы традиционный пользовательский интерфейс библиотеки MFC, в диалоговом окне мастера выбираем установку стиля проекта “MFC Standart”. Чтобы мастер включил комментарии в генерируемые исходные файлы, выбираем установку “Yes,Please”. Комментарии поясняют назначение кода и определяют места, в которые программист должен добавить собственный код. Наконец выбираем вариант связи библиотеки MFC “As a staticaly linked library”. При этой установке код переносится прямо в исполняемый файл. Щёлкаем на Next, чтобы отобразить следующее диалоговое окно.
13) Это диалоговое окно отображает информацию по каждому из четырёх главных классов, созданных для программы мастером. Не изменяем эту информацию. Щелкаем Finish
14) Диалоговое окно New Project Information позволяет подытожить
сделанный ранее выбор характеристик программы. Щелкаем ОК, и мастер создаст указанный каталог проекта, сгенерирует исходные файлы программы и откроет вновь созданный проект Ellipse.
Классы и файлы программы.
Программу Ellipse будем называть приложением с однооконным интерфейсом(SDI). Это означает, что в данный момент времени в ней может отображаться только один документ. Когда мастер создаёт приложение SDI, он порождает четыре главных класса:
- класс документа;
- класс представления (view);
- класс главного окна;
- класс приложения;
Исходные задачи программы распределяются по этим четырём главным классам, и мастер создаёт четыре отдельных исходных файла для каждого из них. По умолчанию он порождает имена классов и исходных файлов по имени проекта.
Класс документа в Ellipse называется CЕllipseDoc. Он порождается из класса CDocument библиотеки MFC. Заголовочный файл CEllipseDoc имеет имя CEllipseDoc.h, а имя файла реализации - CEllipseDoc.cpp. Класс документа отвечает за хранение данных программы и за чтение и запись данных на диск.
Класс представления в Ellipse называется CЕllipseView и порождается от MFC-класса Cview. Заголовочный файл CEllipseView называется CEllipseView.h, а имя файла реализации - CЕllipse.cpp. Класс представления отвечает за отображение данных программы (на экране, на принтере, или другом устройстве) и за обработку информации, вводимой пользователем.
Этот класс управляет окном представления (view window), которое используется для отображения данных программы на экране. Класс представления в Ellipse просто отображает строку сообщения внутри окна представления.
Класс главного окна в Ellipse называется CMainFraim и порождается от MFC-класса CFrameWnd. Заголовочный файл CMainFrame называется MainFrm.h, а имя файла реализации - MainFrm.cpp. Класс главного окна управляет главным окном программы, которое является обрамляющим окном и содержит рамку окна, строку заголовка, строку меню и системное меню. Обрамляющее окно также содержит кнопки Minimize, Maximize, Close, а иногда и другие элементы пользовательского интерфейса, например, панель инструментов, строку состояния. Окно представления, управляемое классом представления, занимает внутри обрамляющего окна пустую область, которая называется клиентской областью главного окна. Окно представления не имеет видимых элементов, кроме текста и графики, отображающейся явно. Окно представления – дочернее окно главного окна, поэтому оно всегда отображается поверх и внутри границ рабочей области главного окна.
Наконец, класс приложения назван CEllipseApp и порожден из MFC–класса CWinApp. Файл заголовков класса CEllipseApp назван Ellipse.h, а файл реализации – Ellipse.cpp. Класс приложения управляет программой в целом. Это значит, что он выполняет общие задачи, не относящиеся к каким-либо другим трём классам (например, инициализацию программы и её заключительную очистку). Каждая MFC–программа должна создать в точности один экземпляр класса, порождённого из класса CWinApp. Четыре главных класса обращаются друг к другу и обмениваются данными, вызывая открытые функции-члены другого класса и посылая сообщения.
Глава 2.
Использование функций рисования
1) Создание объекта контекста устройства
2) Выбор инструментов рисования
3) Выбор стандартных инструментов рисования
4) Создание инструментов рисования
Существуют два различных подхода к созданию и манипулированию графическими изображениями. Можно также вызвать функции рисования в процессе выполнения программы. Эти функции предназначены для создания рисунков, состоящих из отдельных геометрических фигур, таких, как прямые линии, дуги и прямоугольники. Возможно создание и отображение растровых изображений (называемых точечными рисунками), сохраняющих текущие коды пикселей, используемых для воспроизведения образов на устройстве. Растровые изображения удобны для создания более сложных рисунков, которые нелегко разделить на отдельные геометрические фигуры. Средства, описанные в этих главах, взаимосвязаны. Функции рисования используются для изменения узоров пикселей внутри растровых изображений, а битовые операции применяются для манипулирования изображениями, созданными с помощью функций рисования, например, для перемещения или растягивания изображения.
Рассматривается как используются функции рисования, предоставляемые системой Windows и библиотекой MFC. Эти функции в сочетании с растровыми средствами составляют полный набор инструментов создания графических образов внутри окна представления или какого-либо другого устройства (например, принтера). Существуют специальные технические приемы печати графических изображений или текстов. В этой главе я рассмотрю основные действия, выполняемые при создании графических
изображений:
1. Создание объекта контекста устройства.
2. Выбор средств рисования внутри объекта.
3. Установка атрибутов рисования для объекта.
4. Вызов функций-членов объекта для рисования графики.
1).Создание объекта контекста устройства
Как известно, для отображения текста или графики необходим объект контекста устройства, соответствующий окну или устройству вывода данных. При рисовании этот объект сохраняет выбранные средства и установленные атрибуты и предоставляет функции-члены для рисования точек, линий, прямоугольников и других фигур.
Для отображения графического объекта с помощью функции OnDraw класса представления используется объект контекста устройства, адрес которого передается в функцию.
void CMyView::OnDraw (CDC* pDC )
{
// отобразите графику, используя 'pDC->'
}
Функция OnDraw вызывается при рисовании или перерисовке окна представления. Если класс представления поддерживает прокрутку (т. е. порожден от класса CScrollView), то переданный в него объект контекста устройства настраивается на текущую позицию прокрутки документа.
Если программа отображает графику не в окне представления, а в каком-то другом окне (например, в диалоговом), то класс окна для рисования или перерисовки предоставляет обработчик сообщений wm_paint, называемый OnPaint, который создает объект контекста устройства, порождаемый от MFC-класса CPaintDC.
void CMyDialog::OnPaint()
{
CPaintDC PaintDC (this) ;
// отобразите графику, используя 'PaintDC". . .
)
Примечание
Когда нужно нарисовать или перерисовать окно представления, ему передают сообщение wm_paint. Класс cview предоставляет функцию OnPaint, которая создает и подготавливает объект контекста устройства, а затем передает его в функцию OnDraw. Класс окна, который не порождается от cview, должен предоставлять собственную функцию OnPaint, выполняющую рисование содержимого окна.
Чтобы отобразить графику в окне представления или другом окне из функции, которая не обрабатывает сообщения OnDraw или OnPaint, нужно создать объект контекста устройства, являющийся членом MFC-класса CClientDC. Если окно представления поддерживает прокрутку, то перед использованием объекта необходимо вызвать функцию CScrollView: :OnPrepareDC для настройки объекта на текущую позицию документа.
void CMyView::OtherFunction ()
{
CClientDC ClientDC (this)
// Если графика отображается в окне представления,
// поддерживающем прокрутку:
--> ЧИТАТЬ ПОЛНОСТЬЮ <--