( $44, $17, $44, $17, $44, $17, $44, $17 )

Подобные константы можно задать для любого из шаблонов с рис. 19.21. Если программы должны работать на ПЭВМ с монохромным дисплеем (MDA, Hercules), то наличие разных по яркости шаблонов заполнения может скомпенсировать отсутствие цветных возможностей у монитора.

19.5.2.2. Назначение шаблона заполнения (заливки). Оно производится процедурой

SetFillStyte( Pattern : Word; Color : Word )

где параметр Pattern определяет вид шаблона заливки, a Color — его цвет. Все разрешенные значения параметра Pattern предопределены в модуле Graph в виде констант:

CONST

EmptyFill = 0 { сплошная заливка цветом фона }

SolidFill = 1 { сплошная заливка текущим цветом }

LineFill = 2 { заливка типа === }

LtSlashFill = 3 { заливка типа /// }

SlashFill = 4 { заливка жирными линиями типа /// }

BkSlashFill = 5 { заливка жирными линиями типа \\\ }

LtBkSlashFill = 6 { заливка типа \\\ }

HatchFill = 7 { заливка редкой штриховкой }

XHatchFill = 8 { заливка частой штриховкой }

InterleaveFill =9 { заливка прерывистой линией }

WideDotFill = 10 { заливка редкими точками }

CloseDotFill = 11 { заливка частыми точками }

UserFill = 12 { заливка, определенная программистом }

Наиболее интересна здесь константа UserFill. Она используется для определения типа заливки, который предварительно был задан в программе. Для задания своего нового шаблона необходимо воспользоваться процедурой

SetFillPattern(PattMatrix : FillPatternType; Color : Word)

передав ей в параметре PattMatrix матрицу шаблона заливки и указав цвет параметром Color. Эта процедура по действию, вообще говоря,

- 438 -

аналогична SetFillStyle, но устанавливает только «самодельные» шаблоны. Процедура SetFillStyle удобнее, особенно в приложениях деловой графики (гистограммы, круговые диаграммы и т.п.). Задавая хотя бы раз новый шаблон, мы автоматически связываем его со значением UserFill и далее можем манипулировать всеми тринадцатью шаблонами. Если же задать UserFill, не определив перед этим новый шаблон, то функция GraphResult возвратит значение -11 (grError) и все установки вида шаблона и цвета останутся прежними. По умолчанию устанавливается шаблон SolidFill и цвет с номером, максимальным для текущего графического режима.

Несколько слов о назначении цвета при заливке. В обеих процедурах назначения шаблона переменная Color определяет цвет, которым исполняется шаблон. Цвет фона при этом остается неизменным. Это создает некоторые трудности при создании цветовой смеси. Например, цвет фона обычно задается черным (Black), а требуется создать 50%-ю смесь коричневого и синего цветов. Казалось бы, просто: рисуем фигуру, заливаем ее сплошным коричневым и потом заливаем ее 50%-м шаблоном синего. Однако после этих операций получится фигура, залитая чисто синим 50%-и яркости. Дело в том, что процедуры заливки в Турбо Паскале реализованы, на наш взгляд, не очень корректно (чего нельзя сказать о реализации этих процедур в системе Quick Pascal фирмы Microsoft): там, где в двоичном коде шаблона стоят единицы, процедуры ставят точки цвета Color, а там, где нули, — вместо того чтобы ничего не рисовать, они ставят точки цвета текущего фона. Выход из этой ситуации может быть найден с помощью средств, описанных в разд. 19.5. «Управление палитрой».

19.5.2.3. Анализ шаблона заполнения. Рассмотрим процедуры получения информации о текущих установках шаблонов заливки. Так, процедура

GetFillSettings(VAR FillType : FillSettingsType )

возвращает в переменной FillType предопределенного типа

TYPE

FillSettingsType = RECORD

Pattern : Word; { шаблон }

Color : Word; { цвет }

END;

номер шаблона из списка, представленного при описании процедуры SetFillStyle (поле Pattern), и цвет, которым наносится этот шаблон (поле Color). Если значение поля Pattern оказалось равным UserFill,

- 439 -

то для получения подробной информации следует вызвать процедуру

GetFillPattern( VAR PattMatrix : FillPatternType )

возвращающую в переменной типа FillPatternType матрицу последнего определенного пользователем шаблона.

<p>19.5.3. Заливка областей изображения</p>

Теперь перейдем к процедурам, непосредственно реализующим заливку. Имеется целый ряд процедур, рисующих графические фигуры и сразу же заполняющих их по заданному шаблону. Первая из них — процедура

Bar( X1, Y1, X2, Y2 : Integer )

рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Она обычно используется в деловой графике для построения столбчатых диаграмм. Параметры (X1,Y1) и (X2,Y2) — координаты верхнего левого и правого нижнего углов прямоугольника. Еще более наглядное представление информации при рисовании диаграмм позволяет получить процедура

Bar3D( X1,Y1, X2,Y2 : Integer; D3 : Word; Top : Boolean )

Перейти на страницу:

Поиск

Похожие книги