Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Setfillpattern/2

setfillpattern устанавливает текущим видом заполнения шаблон, опре-

деляемый пользователем.

setfillpattern(Upattern, Color) /*(i,i)*/

(bgi_ilist, integer)

Вы можете создать свой шаблон заполнения, послав список целых чисел.

Список должен содержать 8 чисел. Каждый байт соответствует 8-ми пикселам

в рисунке заполнения. Если какой-либо бит равен 1, то соответствующий

пиксел будет отображаться. После вызова setfillpattern этот рисунок будет

автоматически использоваться во всех последующих операциях по заполнению

областей. Он становится текущим шаблоном заполнения.

user_FILL - это величина, возвращаемая предикатом getfillpattern.

Она на может быть использована для активизации определяемого пользовате-

лем рисунка заполнения. Для активизации вашего собственного рисунка поль-

зуйтесь setfillpattern.

Getfillpattern

getfillpattern возвращает определяемый пользователем шаблон заполне-

ния.

getfillpattern(PatternList) /*(o)*/

(bgi_ilist) /*(= integer*)*/

Floodfill/3

floodfill заполняет замкнутые области экрана.

fllodfill(X, Y, Border) /*(i,i,i)*/

(integer,integer,integer)

(X,Y) определяет начальную точку в замкнутой области, которую нужно

заполнить. Область, ограниченная цветом Border, заполняется текущим видом

заполнения текущим цветом заполнения. Если начальная точка находится

внутри замкнутой области, то будет заполнена внутренность этой области.

Если же точка находится вне замкнутой области, то будет заполнена вся

внешняя область.

floodfill не работает с драйвером IBM-8514

Пример заполнения области.

/* Program CH17EX04.PRO */

include "GRAPDECL.PRO"

constants

gray50 = [$aa, $55, $aa, $55, $aa, $55, $aa, $55 ]

goal

initgraph(detect, 0, GraphDriver, GraphMode, ""),

/* Retrieve current settings */

getfillsettings(SavePat, SaveColor),

/* Save user fill pattern */

getfillpattern(SavePatternList),

/* Change fill style */

setfillstyle(slash_FILL, blue),

/* Draw slash-filled blue bar */

bar(0, 0, 100, 100),

/* Custom fill pattern */

setfillpattern(gray50, yellow),

/* Draw customized yellow bar */

bar(100, 100, 200, 200),

/* Restore user fill pattern */

setfillpattern(SavePatternList, SaveColor),

setfillstyle(SavePat, SaveColor),

readchar(_),

closegraph.

Управление цветом.

Перед тем как описать работу предикатов по управлению цветом в CGA и

EGA, предлагается краткое описание того, как получаются цвета на графи-

ческом экране вашего персонального компьютера.

Палитра

Графический экран состоит из массива пикселов. Каждый пиксел отобра-

жает одну цветную точку на экране. Значения пиксела не определяет его

цвет явно. Оно задает только индекс в таблице цветов, которая называется

палитрой. Вход в палитру, соответствующий данному значению пиксела содер-

жит точную информацию о цвете этого пиксела.

Эта непрямая схема имеет несколько значений. Хотя аппаратура имеет

возможность отображать много цветов, одновременно на экране может отобра-

жаться только некоторое их подмножество. Количество цветов, которые могут

одновременно отображаться на экране равно количеству входов в палитру

(размеру палитры - size). Например, в EGA аппаратура может отображать 64

различных цвета, но только 16 из них одновременно, поэтому размер палитры

в EGA size = 16.

Размер палитры определяет границы значений пиксела от 0 до (size-1).

Предикат getmaxcolor возвращает наибольшее доступное значение пиксела

(size-1) для данного графического драйвера и режима.

В этой главе часто используется понятие цвет: текущий цвет рисова-

ния, текущий цвет заполнения, цвет пиксела. Фактически этот цвет аналоги-

чен значению пиксела - это всего лишь индекс входа в палитру. Только па-

литра определяет действительный цвет экрана. Управляя палитрой можно из-

менять цвет на экране не меняя значения пикселов (т.е. не пользуясь изме-

нением цвета рисования, цвета заполнения и т.д.).

Соседние файлы в папке Документация