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



         

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


Графическое изображение становится более красочным, когда на экране представлены не только контуры геометрических фигур, но и закрашенные или заштрихованные области. Выполнение такого рода операций осуществляется с помощью процедур заливки (англ, paint, fill). Подобно тому, как при построении линий задается точечный шаблон, управляющий воспроизведением пикселов, для площадных объектов существует точно такая же возможность задания двумерной маски, хранящейся в битовом массиве размером 8x8 (Си, Паскаль) или 8x8xk (QBasic, 1 < k < 8). Такая маска, перемещаясь по горизонтали и вертикали, управляет окраской попадающих под ее биты пикселов. К сожалению, идеи такого управления, заложенные в системе QBasic и BGI-пакете, сильно отличаются.

Более-естественными нам представляются алгоритмы заполнения площадных объектов, реализованные фирмой Borland. Для них характерно задание квадратной маски 8x8, управляющей окраской пикселов изображения, накрываемых этой маской. Если в соответствующем разряде маски находится единица, то расположенный под ним пиксел закрашивается в заранее установленный цвет. Пиксел экрана, попадающий под нулевой бит маски, окрашивается в цвет фона. После обработки очередной площадки изображения маска смещается на 8 пикселов вправо. Когда текущая полоска экрана исчерпана, маска перемещается в начало следующей полоски. Системная или пользовательская маска в сочетании с установленными цветами заливки и фона составляют то, что принято называть шаблоном (англ, pattern) заливки.

Для выбора шаблона заливки в BGI-пакете используются две функции (процедуры) — setfillstyle И setfillpattern: setfillstyle(numpat,col); setfiilpattern(pattern,col);

Параметр numpat задается целым числом из диапазона [0,12] или значением соответствующей мнемонической константы (табл. 8.2). 0н позволяет выбрать один из системных шаблонов (numpat < 12) или установить пользовательский шаблон (numpat = 12), описываемый с помощью функции setfillpattern. Параметр col задает код цвета, в который должны окрашиваться пикселы изображения, попадающие под единичные биты маски.




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