Установка стиля и цвета закраски. Закрашивание фигур.
После того как Вы нарисовали картинку, у Вас, верно, возникло желание ее раскрасить. Для этого есть различные способы. Познакомимся с одним из них – “заливкой” замкнутых площадей различными видами заполнения. Для этого существуют две процедуры SetFillStyle и FloodFill.
SetFillStyle (Pattern, Color), где переменные Pattern, Color типа Word – определяет стиль заполнения и цвет заполнения.
Значения Pattern можно взять из следующей таблицы:
Стандартные стили заполнения | ||
Константа | Код | Маска-заполнение |
EmptyFill | цветом фона | |
SolidFill | текущим цветом | |
LineFill | символами - -, цвет – Color | |
LtSlashFill | символами //норм. толщины, цвет – Color | |
SlashFill | символами //удвоенной толщины, цвет – Color | |
BkSlashFill | символами \\удвоенной толщины, цвет – Color | |
LtBkSlashFill | символами \\норм. толщины, цвет – Color | |
HatchFill | вертикально-горизонтальная штриховка тонкими линиями, цвет – Color | |
XhatchFill | штриховка крест-накрест по диагонали “редкими” тонкими линиями, цвет – Color | |
InterLeaveFill | штриховка крест-накрест по диагонали “частыми” тонкими линиями, цвет – Color | |
WideDotFill | “редкие” точки | |
CloseDotFill | “частые” точки |
Например, если мы употребили процедуру
SetFillStyle (WideDotFill, Red) или SetFillStyle (10, 4),
то выбрали стиль закраски “редкими” точками красного цвета
Теперь же, когда Вы указали компьютеру ЧЕМ Вы будете закрашивать (стиль и цвет), можно указать, ЧТО Вы будете закрашивать. Для этого существует процедура
FloodFill(X, Y, ColorBorder),где X, Y переменные типа integer, а Border – переменная типа word -процедура, которая позволяет заполнить замкнутую область выбранным стилем и цветом закраски. Необходимо только выполнить несколько требований:
• первые два параметра (X, Y) являются координатами так называемой “затравочной” точки, т. е. точки, лежащей обязательно внутри закрашиваемой области;
• ColorBorder – параметр, обозначающий цвет, которым нарисована закрашиваемая фигура (так называемый цвет “бордюрчика”);
• фигура должна быть начерчена одним цветом;
• фигура должна быть замкнута.
Например, пусть следующая фигура начерчена синим цветом
|
Чтобы закрасить ее выбранным стилем и цветом (“редкие” точки красного цвета, см. выше) нужно дать команду FloodFill(180, 200, 1).
Нужно представить, как компьютер закрашивает фигуру. Первое, что он делает – это находит точку, от которой он начинает заливку и заливает точку за точкой до тех пор, пока не встретит заданный цвет. Таким образом, если фигура замкнутая, то, разливаясь во все стороны, он натыкается на “бордюрчик” и фигура становится закрашенной. Но, если в контуре фигуры есть хотя бы один пиксель, закрашенный другим цветом, замкнутость фигуры нарушается и краска выливается через эту дырочку и заливает не ту область, а иногда и весь экран.
Чтобы Вас уберечь от многих ошибок и, соответственно, сохранить Ваше время, хочу посоветовать относиться к рисованию фигур и их закраске, как к аппликации. Т. е. если нарисовали фигуру, постарайтесь сразу же ее закрасить, а также рисовать фигуры, начиная от самых больших и заканчивая самыми маленькими.
SetBkColor(Color), где переменная Color типа Word – процедура, устанавливающая цвет фона.
Примечание. После замены цвета фона на любой, отличный от черного, Вы не сможете более использовать цвет 0 как черный, он будет заменяться на цвет фона, т.к. процедуры модуля Graph интерпретируют цвет с номером 0 как цвет фона.
ClеarDeviсe – процедура, которая очищает экран и устанавливает курсор в позицию (0,0).
GraphDefaults – cбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые по умолчанию при запуске процедуры InitGraph).
Задание. Раскрасьте кораблик, используя различные стили и цвета. Покажите учителю полученную картинку и листинг программы.
Дата добавления: 2015-05-16; просмотров: 895;