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



         

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


cleardevice();

g0t0xy(1,1);

printf("\n номер шаблона=%d", k) ;

setfillpattern(&pattern[k] [0],4);

setfillstyle(12, 14);

bar3d(240,40,440,240,16,l);

getch (); } }

0дной из самых интересных процедур заливки является функция fi00dfiii: fl00dfill(x,у,eg);

Работает эта процедура с замкнутой областью, внутренней или внешней части которой принадлежит точка с координатами (х,у). Параметр eg задает цвет пикселов, составляющих границу области. Заливке подвергается та часть области, которой принадлежит точка (х,у). При этом предполагается, что в заливаемой области не встречаются пикселы цвета eg. Если в границе области будет обнаружен микроскопический разрыв хотя бы в один пиксел, то узор-заполнитель обязательно просочится через него и заливка распространится как на внутреннюю, так и на внешнюю части области. При заливке цвет границы сохраняется. 0днако в случае совпадения цвета границы с цветом окраски единичных пикселов шаблона получится область без ярко выраженной границы. Повторная перезаливка такой области уже невозможна.

В системе QBasic мы уже демонстрировали возможность построения залитого прямоугольника с помощью оператора LINE .. . BF. Заполнение его

внутренности ограничено сплошной окраской пикселов в заданный цвет. Все остальные возможности по построению закрашенных или заштрихованных фигур сосредоточены в операторе PAINT, пользоваться которым не так уж и легко. 0ператор PAINT допускает несколько модификаций:

PAINT (x,y),[c0l],eg PAINT (x,y),Ml$,cg PAINT (x,y),Ml$,cg,M2$

Первый формат оператора очень напоминает функцию fi00dfill, заливающую внутреннюю или внешнюю часть области заданным цветом c0l или цветом переднего плана, ранее установленным по оператору C0L0R.

Второй формат отличается от первого только тем, что цвет и узор заливки задаются с точностью до бита в строке M1$, длина которой может достигать 64 байт. Первые четыре байта строки М1$ определяют цветовые атрибуты восьми смежных пикселов на экране. При этом в первом байте такой четверки сосредоточены биты управления синим цветом, во втором байте — биты управления зеленым цветом, в третьем байте — биты управления красным цветом, а в последнем байте — биты управления повышенной яркостью. Четыре следующих байта строки MI$ определяют аналогичные атрибуты восьми смежных пикселов следующей строки и т. д. В полном объеме строка-шаблон позволяет задать цветовые атрибуты пикселов, образующих на экране прямоугольник размером 8x16.




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