
Лекция 11 (2 часа)
11. Операторы работы с графическими примитивами.
Операторы задания палитры - PALETTE, PALETTE USING
Оператор задания цвета – COLOR
Оператор очистки экрана - CLS
Оператор отображения точки на экране монитора - PSET
Оператор отображения точки на экране монитора - PRESET
Оператор отображения линии или прямоугольника - LINE
Оператор построения окружностей и эллипсов - CIRCLE
Функция определения координат или цвета пикселя - POINT
11.1 Операторы задания палитры - PALETTE, PALETTE USING
Назначение: Изменение цветов (атрибутов) в исполняемой палитре. Оператор используется только в системах с адаптерами EGA, VGA и MCGA.
Синтаксис
1. PALETTE [<атрибут палитры>, <цвет>]
Аргумент Описание
<атрибут палитры> Порядковый номер цвета в палитре, который подлежит модификации
<цвет> Номер цвета, присваиваемый атрибуту палитры. При работе с адаптерами VGA и MCGA в режимах вывода 11-13 аргумент <цвет> должен задаваться целым выражением двойной точности; при работе с EGA могут использоваться выражения как двойной, так и одинарной точности.
Оператор обеспечивает возможность формирования желаемой палитры цветов для избранных приложений. Операторы построения графических изображений LINE, CIRCLE, DRAW используют в качестве аргумента цвета атрибуты палитры, а не номера цветов; их совпадение имеет место только в том случае, когда палитра используется по умолчанию.
2. PALETTE USING <имя массива>[(<индекс>)]
Аргумент Назначение
<имя массива> Имя одномерного массива, содержащего номера цветов, присваиваемых атрибутам палитры, доступным в текущем режиме вывода. В режимах 11-13 при работе с адаптерами VGA и MCGA это должен быть массив целых чисел двойной точности. При работе с адаптером EGA это может быть массив целых чисел как двойной, так и одинарной точности
<индекс> Индекс первого из элементов массива, используемых для формирования или модификации палитры
При использовании опции USING все атрибуты палитры можно изменить, используя единственный оператор PALETTE. Каждому атрибуту палитры, задаваемому индексом массива, присваивается номер цвета, равный значению соответствующего элемента массива. Значение элемента массива палитры, равное -1, означает, что атрибут палитры, определяемый этим элементом, не изменяется; все иные отрицательные значения элементов массива являются недопустимыми для назначения палитры
11.2. Оператор задания цвета - COLOR
Назначение: Задаются цвета фона, переднего плана и окаймления.
Синтаксис Режим вывода SCREEN 0:
COLOR [<передний план>][, [<фон>][, <окаймление> ]
Изменяются заданные по умолчанию цвета текста (переднего плана), фона и окаймления.
Аргумент <передний план> - целочисленное выражение, принимающее значение в интервале 0-31; задает цвет изображения в текстовом режиме, то есть цвет текста; значения от 0 до 15 задают 16 цветов; для получения мигающих символов следует к номеру цвета прибавить 16.
Аргумент <фон> должен быть целым выражением в интервале 0-7; он определяет цвет фона для всех символов мерцающий цвет фона не поддерживается.
Аргумент <окаймление> указывает цвет окаймления экрана и должен быть целым выражением в интервале 0-15; адаптеры EGA, VGA и МССЛ не поддерживают аргумент <окаймление>.
Устанавливается следующее соответствие между номером цвета и iw::-том:
О - чёрный; 8 - серый;
1 - синий; 9 - светло-синий;
2 - зелёный; 10 - светло-зелёный;
3 - голубой; 11 - светло-голубой;
4 - красный; 12 - розовый;
5 - пурпурный; 13 - светло-пурпурный;
6 - коричневый; 14 - жёлтый;
7 - белый; 15 - ярко-белый.
Режим вывода SCREEN 1:
COLOR [<фон>][, <палитра>]
Аргумент <фон> задаёт цвет экрана из диапазона вышеперечисленных цветов.
Аргумент <палитра> определяет один из двух наборов цветов. Первый набор (<палитра> = 0) объединяет следующие цвета: зелёный, красный, коричневый. Оператор COLOR 0 равносилен следующим трем операторам PALETTE: PALETTE I, 2 PALETTE 2, 4 PALETTE 3, 6
Второй набор (<палитра> =1) объединяет следующие цвета: голубой, пурпурный и ярко-белый. Оператор COLOR , 1 равносилен следующим трем операторам PALETTE: PALETTE 1, 3 PALETTE 2, 5 PALETTE 3, 7
Оператор COLOR в режиме вывода SCREEN l прекращает действие текущих операторов PALETTE.
Режим вывода SCREEN 2:
Использование оператора COLOR недопустимо; выдается сообщение об ошибке "Illegal function call" (Неверный вызов функции, ERR=53).
Режимы вывода SCREEN 7, 8, 9, 10:
COLOR [<передний план>][, [<фон>]
В этих режимах цвет окаймления не определён. Цвет фона задается аргументом <фон> с указанием номера цвета из спектра, используемого для данного адаптера.
Аргумент <передний план>, по умолчанию, совпадает с цветом изображаемых линий; для задания цвета изображения используется атрибут палитры, а не номер цвета.
Режим вывода SCREEN 11:
Для установления цвета в этом режиме необходимо использовать оператор PALETTE. При использовании оператора COLOR выдается сообщение об ошибке "Illegal function call" (Неверный вызов функции, ERR=53).
Режимы вывода SCREEN 12, 13:
COLOR [<передний план>]
В этих режимах цвет фона задать нельзя, он устанавливается по умолчанию или используя оператор PALETTE 0, <номер цвета>. Цвет изображения задаётся аргументом <передний план>, который является атрибутом палитры, а не атрибутом цвета.
При использовании адаптеров EGA, VGA и MCGA оператор PALETTE обеспечивает большую гибкость по сравнению с оператором COLOR в задании цветов для изображения переднего плана, фона и окаймления.
11.3. Оператор очистки экрана - CLS
Назначение: Оператор CLS предназначен для стирания содержимого экрана. Синтаксис: CLS [ ( 0 | 1 | 2 } ]
Используются 4 разновидности оператора CLS:
CLS - стирается либо текстовая, либо графическая информация, в зависимости от предшествующего применения оператора VIEW.
CLS О - с экрана стирается как текстовая, так и графическая информация.
CLS I - если ранее был применен оператор VIEW, стирается только графическая информация. В противном случае очищается весь экран.
CLS 2 - стирается только текстовая информация, за исключением нижней строки экрана (строки номер 25, 30, 43 или 60 в зависимости от формата экрана).
11.4. Оператор отображения точки на экране монитора:
PSET [STEP] (x!,y!) [,цвет%] ,
где STEP - координаты x!,y! задаются относительно текущего положения курсора (в приращении), по умолчанию абсолютная система координат;
x!,y! - координаты точки растра;
цвет% - цвет точки, по умолчанию цвет текущего переднего
плана.
11.5. Оператор отображения точки на экране монитора:
PRESET [STEP] (x!,y!) [,цвет%] ,
где STEP - координаты x!,y! задаются относительно текущего положения курсора (в приращении), по умолчанию абсолютная система координат;
x!,y! - кординаты точки растра;
цвет% - цвет точки, по умолчанию цвет фона.
11.6. Оператор отображения линии или прямоугольника :
LINE [[STEP] (x1!,y1!)] - [STEP] (x2!,y2!) [,[цвет%] ,[{ B | BF } [,стиль%]]]
где STEP - координаты x!,y! задаются относительно текущего положения курсора (в приращении), по умолчанию абсолютная система координат;
x1%,y1% и x2%,y2% - координаты начала и конца линии или координаты противоположных углов прямоугольника;
цвет% - цвет линии, по умолчанию цвет переднего плана;
B или BF - построение прямоугольника соответственно без и с закрашиванием внутренней части;
стиль% - 16 битовое число служащее маской для построения прерывистых линий.
11.7. Оператор построения окружностей и эллипсов:
CIRCLE [STEP] (x!,y!), радиус! [, [цвет%] [, [начало!] [, [конец!] [,апект!] ] ] ]
где STEP - координаты x!,y! задаются относительно текущего положения курсора (в приращении), по умолчанию абсолютная система координат;
x!,y! - кординаты точки растра;
радиус! - радиус окружности;
цвет% - цвет точки, по умолчанию цвет текущего переднего плана.
начало! - координата начала дуги в радианах;
конец! - координата конца дуги в радианах;
аспект! - отношение оси Y к ос X.
11.8. Функция определения координат или цвета пикселя - POINT
Назначение: Определяет номер цвета пикселя или выдает его координаты.
Синтаксис: POINT(x,y) POINT(<число>)
Если в функции POINT задается пара координат х и у, возвращается номер цвета пикселя с этими координатами. В том случае, когда координаты выходят из допустимого диапазона, выдается значение -1.
Функция POINT с аргументом <число> позволяет получить текущую координату курсора (варианты значений аргумента перечислены ниже).
-
Значение
Возвращаемый результат
0
Текущая абсолютная координата х
1
Текущая абсолютная координата у
2
Текущая относительная координата х в системе координат, задаваемой оператором WINDOW. Если оператор WINDOW не выполнялся, то возвращается значение функции POINT (0)
3
Текущая относительная координата у. Если оператор WINDOW не выполнялся, то возвращается значение функции POINT (0).