Прототип к варианту 16 - МикроГраф

Страницы работы

Содержание работы

Прототип к варианту 16 - МикроГраф

Графический редактор реализует многие приемы, встречающиеся в полноценных графических редакторах. Среди нереализованных возможностей наибольшего внимания заслуживают операции с текстом и растровыми изображениями; обе темы рассматриваются в последующих главах. Читатели предыдущего издания этой книги узнают в этом примере 16-разрядную программу QuikDraw с улучшенной поддержкой метафайлов. Представленная версия совместима с Win32 и Winl6 (в 16-разрядном VB 4.0).

На рис. 8.9 показано окно программы QuikDraw на стадии конструирования.

Использование QuikDraw

Меню Draw приложения QuikDraw позволяет выбрать графическую команду Windows API, выполняемую при нажатии кнопки Execute. Каждой команде в качестве параметров передаются две и более точек. Координаты точек задаются щелчками мыши в большом графическом поле. Максимальное количество точек зависит от типа выбранной фигуры; например, для линии требуются всего две точки.

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

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

Пять полос пр'окрутки в правой нижней части экрана предназначены для выбора стиля пера и кисти, цвета пера и кисти, а также толщины пера для рисования. Текущая фигура рисуется с применением этих атрибутов. Изменив атрибуты, нажмите кнопку Execute или Small View, чтобы текущая фигура была нарисована с новыми атрибутами. В маленьком прямоугольном графическом поле (Pictures) рисуется прямоугольник с применением текущих графических объектов (пера и кисти).

Кнопка AddToMF добавляет текущую фигуру в глобальный метафайл. Кнопка ShowMF воспроизводит метафайл в двух графических полях, большом и малом. При помощи этих двух кнопок можно построить более сложное изображение, состоящее из нескольких фигур. Кнопка Del eteMF удаляет текущий метафайл. Флажок PolyMode WINDING выбирает режим заполнения многоугольников; его смысл разъясняется на рис. 8.15 справочного раздела этой главы. На рис. 8.10 изображено окно программы QuikDraw после вывода сложного метафайла, подготовленного в этой программе.

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

Рис. 8.10. Приложение QuikDraw во время работы

Описание проекта

Проект QuikDraw состоит из трех файлов. В программе используется всего одна форма QUIKDRAW.FRM. Единственный модуль программы, QUIKDRAW.BAS, содержит определения констант и глобальные определения. В файле APIGID32.BAS хранятся объявления для библиотеки динамической компоновки APIGID32.DLL, вспомогательные функций которой используются данным приложением.

В листинге 8.4 приведен заголовок формы QUIKDRAW. FRM.

Листинг 8.4. Заголовок формы QUIKDRAW.FRM

Пять полос прокрутки объединены в массив элементов с именем ScrollObject. Значения свойств элементов этого массива на стадии конструирования приведены в табл. 8.9. Свойство Value передается в качестве индекса функции QBColor, возвращающей цвет RGB. К обработчику события Change полос прокрутки подключается код, обеспечивающий циклический перебор значений. Другими словами, когда полоса прокрутки переходит в состояние Мах, программа немедленно переводит ее в состояние Min+1.

Таблица 8.9. Полосы прокрутки приложения QuikDraw

Index

Min

Max

Value

Описание

0

-1

16

0

Цвет пера

1

-1

16

15

Цвет кисти

2

-1

5

0

Стиль пера

3

-1

7

6

Стиль кисти; 0-4 — штриховые кисти, 5 — однородная кисть

4

0

9

1

Толщина пера

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

Модуль QuikDraw разделен на две секции. В листинге 8.5 приведена секция объявлений. В оставшейся части модуля, приведенной в листинге 8.6, содержатся функции, работающие с метафайлами. Подобное деление упрощает чтение программы.

Похожие материалы

Информация о работе