Практика программирования (Бейсик, Си, Паскаль)



         

Закрашивание и заполнение замкнутых областей - часть 3


SetFillPattern(patl,4);

Тип данных FillPatternType, описанный в модуле Graph, представляет собой байтовый массив из 8 элементов — array [1. .8] of byte.

В BGI-пакете предусмотрены пять процедур (функций) для построения заполненных геометрических фигур:

  • bar (xl,y1,x2,y2) — залитый прямоугольник без контура;

  • bar3d(x1,y1,x2,y2,d,t) — трехмерный столбик;

  • fillellipse (x, у, rх, rу) — залитый эллипс или окружность;

  • filipoly (п,ху) — залитый многоугольник;

  • sector (х,у, a1,a2, rх, rу) — залитый эллиптический сектор;

  • pieslice (x,y,al,a2, r) залитый круговой сектор.

    В трехмерном столбике первые четыре параметра определяют положение передней грани. Параметр d задает "глубину" столбика, и иногда его рекомендуют выбирать равным четверти ширины (d = 0.25 * (х2 - x1)). Последний аргумент в Си может принимать нулевое или ненулевое значение, а в Паскале — true или false. Если он отличен от о или равен true, то верхняя грань столбика ("крыша") рисуется. В противном случае столбик воспроизводится без крыши, что дает возможность поставить над ним еще один столбик и не заботиться об удалении невидимых линий. В трехмерном столбике заливается только передняя грань.

    Процедура bar3d, как правило, используется для воспроизведения объемных диаграмм. 0днако в ней можно задать нулевую глубину столбика (d = о) и тогда результат ее работы заменяет выполнение двух последовательных процедур:

    bar111,11,99,99);

    rectangle(10,10,100,100);

    Первая из них отображает залитую внутренность прямоугольника, а вторая — обводит его границу.

    Параметры остальных процедур довольно подробно рассматривались в предыдущих разделах.

    Недавно одному из авторов пришлось разрабатывать программные средства выделения замкнутых областей в цифровых электронных картах. Кроме использования самых простых идей — выделение цветом и штриховками, -наиболее плодотворный результат при выводе на дисплей был достигнут регулярными заполнителями с помощью заливочных шаблонов. Самая богатая коллекция таких шаблонов, которая была известна нам по литературе, насчитывала 28 образцов [13]. 0днако по своему разнообразию этот набор показался нам недостаточно выразительным. Кроме того, в нем отсутствовала какая-либо классификация шаблонов. Пришлось потратить несколько дней на эксперименты с редактором образов в системе Builder C++, после чего на свет появилось более сотни шаблонов. Их мы и представляем нашим читателям в надежде, что наиболее любознательные сумеют построить еще не один десяток приятных узоров.




    Содержание  Назад  Вперед