Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KG / КГ_7глава.doc
Скачиваний:
109
Добавлен:
26.05.2014
Размер:
1.06 Mб
Скачать

7.2. Линии

В состав API Windows входит несколько функций, которые рисуют прямые и кривые линии:

D AngleArc — дуга окружности с заданием углов; D Arc, ArcTo — дуга эллипса;

LineDDA — вычисление координат пикселов отрезка прямой линии и вы­зов определяемой пользователем функции вывода пикселов;

LineTo — рисование отрезка прямой линии от текущей позиции к задан­ной точке;

□ MoveToEx — задание текущей позиции графического вывода;

PoIyBezier, PoIyBezierTo — один или несколько связанных между собой кубических сплайнов Безье;

PoIyDraw — несколько связанных отрезков прямых и сплайнов Безье;

Polyline, PolylineTo — ломаная линия из многих связанных между собой отрезков прямых (полилиния);

PolyPoIyline — несколько полилиний как единый объект.

Примеры для линий— графических примитивов API Windows— даны в табл. 7.1.

Таблица 7.1

Стиль линии. Перо

В терминологии Windows API перо описывает следующие характеристики линии — цвет, толщину и стиль (пунктир). Перо — один из атрибутов кон­текста графического устройства. По умолчанию в контекст выбрано перо, которое соответствует черной тонкой непрерывной линии. Такое перо отно­сится к стандартным перьям.

Все линии, рисуемые вашей программой с помощью функций GDI Windows API, выводятся одним и тем же цветом, имеют одинаковую толщину и тот же стиль до тех пор, пока не изменить перо. Функции рисования линий не име­ют аргументов для указания текущих атрибутов линий (это характерно для графических библиотек, в которых подобные характеристики рисуемых объ­ектов записываются как глобальные переменные, чтобы уменьшить количе­ство аргументов вызова функций рисования). Перо относится ко всем линиям и контурам фигур.

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

f линии будут рисоваться данным пером до тех пор, пока вы не выберете в ! контексте устройства очередное перо.

! Важно то, что, создавая новое перо, нужно обязательно позаботиться об [ уничтожении предыдущего пера. Перо есть объект GDI, для него выделяется специальная область памяти. Перо существует до тех пор, пока его не унич-; тожить. Завершение работы прикладной программы может и не привести к автоматическому уничтожению объектов GDI и освобождению памяти ком­пьютера. Своевременное уничтожение неиспользуемых объектов GDI возла­гается на вашу программу. Иначе для некоторых версий Windows могут воз­никнуть утечки памяти, накопление которых может привести к нежелатель­ным последствиям.

Не следует пытаться уничтожить стандартные перья.

Для определения стиля линий используются функции, которые имеют в сво­ем названии —Реп—. Типичная последовательность для вывода линии с за­данным стилем может быть такой:

Здесь создается перо, которое соответствует тонкой красной штрих-пунктирной линии. После использования перо уничтожается.

Меридианы и параллели

РаССМОТрИМ Пример Программы, В КОТОРОЙ ИСПОЛЬЗуЮТСЯ фуНКЦИИ MoveToEx

и Ыпето для рисования меридианов и параллелей шара. Текст программы studex2о. срр:

Изображение шара приведено на рис. 7.9. Запустите программу, выберите пункт меню "Графи­ка" и вы увидите шар, который, как кажется, враща­ется вокруг оси. Здесь вращается не шар, а система координат. Для этого использовано соответствующее преобразование координат при создании проек* ции — повороты координат. Углы наклона камеры вэтом примере следующие: а=0... 180,β=45 градусов. ^г^ппетш^ Меридианы и параллели рисуются только для тех точек поверхности, для которых координата Z боль­ше нуля (в повернутой системе). Положительные значения Z соответствуют видимой части шара. Рисование меридианов и параллелей сделано в виде од­ной функции MeridOrParal для уменьшения размера текста программы. Не­обходимо отметить, что эта программа разработана как раз для шара. Чтобы

нарисовать подобным образом, например, эллипсоид, необходимо сделать существенные изменения в тексте программы.

Фрактал из линий

В следующем примере программы мы используем линии для рисования фрактала. Этот фрактал немного напоминает папоротник (рис. 7.10). Исполь­зуем перья различных оттенков зеленого цвета для имитации ствола, ветвей и листвы.

В этом примере рисуются линии различной толщины: для листвы линии тол­стые, а для ствола и ветвей — тонкие (можно и наоборот — для листвы более толстые линии).

Рис. 7.10. Фрактал из линий Текст программы studex2i. срр:

!

Соседние файлы в папке KG