ГРАФИЧЕСКИЕ ОПЕРАТОРЫ_
DRAW ТО, FILL, FILLED(), ROLL, SCROLL
DRAW TO <x>,<y>[,<угловая величина>]
Такой модернизированный синтаксис оператора
DRAW позволяет при построении отрезка или дуги использовать в качестве
параметров не приращения координат относительно последней выведенной
точки (как в Spectrum-Бейсике), а абсолютные координаты конечной точки.
Так, инструкции PLOT 10,25: DRAW 30,40 и PLOT 10,25: DRAW ТО 40,65
выполнят одинаковые действия.
Смысл третьего параметра — угловой величины в радианах — остается таким же, как и для стандартной команды DRAW.
В Beta Basic все графические операторы
приобретают новое полезное свойство: в качестве их параметров можно
использовать не только физические координаты экрана (начало отсчета
— левый нижний угол основного экрана, единица отсчета —
один пиксель), но и математические координаты. То есть графические
построения в Beta Basic можно делать в системе координат с произвольной
единицей измерения (больше или меньше пикселя), которая определяется
специальными переменными XRG и YRG. Начало отсчета математической
системы координат задается другой парой переменных — XOS и YOS
— и может быть расположено в любой точке экрана и даже за его
пределами. Так, при XOS=XRG/2 и YOS=YRG/2 начало координат будет
находиться в центре экрана, а при XRG<XOS<0 и YRG<YOS<0
— за его пределами. При старте Beta Basic переменные, задающие
математическую систему координат, уже определены и имеют стандартные
значения: XRG=256, YRG=176, XOS=0 и YOS=0.
Во всех последующих примерах программ,
работающих с графикой, предполагается, что переменные XOS, YOS, XRG и
YRG имеют стандартные значения.
Beta Basic восполняет существенный недостаток графики Spectrum-Бейсика — вводит операторы заливки замкнутых контуров.
FILL [ < список атрибутов >; ] < х >, < у >
Оператор FILL осуществляет заливку области
экрана, ограниченной замкнутой линией. Задается эта область указанием
координат любой точки внутри нее (параметры <х>,<у>). FILL
присваивает знакоместам, «задетым» областью заливки,
атрибуты, указанные в <списке атри6утов>. Заливка осуществляется
цветом тона либо цветом фона в зависимости от того, какой из атрибутов
— INK или PAPER — стоит первым в <списке атри6утов>.
Попробуем набрать и выполнить программку:
10 CIRCLE 100,100,70
20 FILL INK 5; 100,100
и получим на экране голубой круг.
Заливка цветом фона (FILL PAPER) как ластиком стирает ранее нанесенную заливку цветом тона. Дополним программку строкой
30 PAUSE 0: FILL PAPER 4; 100,100
После нажатия на любую клавишу нарисованный круг перекрасится.
Если опустить у ключевых слов INK или PAPER
стоящий после них параметр (код цвета), то закраска будет происходить
текущими цветами тона или фона.
Оператор FILL без < списка атрибутов> закрашивает указанную область текущим цветом тона.
После выполнения оператора FILL можно подсчитать количество пикселей, подвергшихся перекраске. Это значение возвращает функция
FILLED0
Она не требует аргументов, результат ее
определяется последним выполненным оператором FILL. Функция FILLEDQ
может использоваться, например, для определения площади закрашенной
фигуры.
В Beta Basic, как и в других диалектах Бейсика для ZX Spectrum, присутствуют операторы скроллинга графического окна экрана92:
ROLL <режим> [. <шаг> ] [; <х>, <у>; <ширина> г <высота>)
SCROLL [<режим>[,<шаг>][;<х>,<у>;<ширина>,<высота>]|
Оператор ROLL выполняет циклический скроллинг,
при котором изображение, пропадающее за границей окна, выплывает с
противоположной стороны, a SCROLL — обычный скроллинг, уводящий
изображение безвозвратно.
Окно экрана, над которым производятся эти
действия, задается четырьмя параметрами: <х> и <у> —
координаты в пикселях верхнего левого угла окна; <ширина> —
ширина окна, задаваемая в стандартных знакоместах (диапазон от 1 до 32); <высота> — высота окна в пикселях.
Значения параметров <х> и <у> операторы скроллинга округляют до чисел, кратных восьми, в сторону увеличения.
Если координаты и размеры окна не указывать, то действие оператора будет распространяться на весь экран.
Расстояние в пикселях, на которое будет
осуществлено смещение изображения в окне при однократном выполнении
операторов скроллинга, задается параметром <шаг>. Допустимый
диапазон его значений: от 1 до 256 для горизонтальных перемещений и от
1 до 176 — для вертикальных. По умолчанию параметр <шаг>
принимает значение 1.
Параметр <режим > задает направление
скроллинга и область его действия: изображение в окне может сдвигаться
без смещения атрибутов, со смещением атрибутов, а также возможен сдвиг
атрибутов при неизменной картинке. В последнем случае сдвиг
производится на 8 пикселей независимо от того, какое значение задано в
параметре <шаг>. Зависимость режимов работы операторов ROLL и
SCROLL от значения параметра <оежим> приведена в табл. 17.
Таблица 17. Режимы работы операторов ROLL и SCROLL.
! KojKpiMим*"'
|
HWplMt Htltlfl
|
О&ММСУЬ Д<квС¥Ш4Й ...
|
1
| ' !
|
влево
|
только атрибуты
|
; 2 вниз
1 1 {
|
только атрибуты j
|
1 3 вверх
|
только атрибуты j
|
1 А 1 '
4 вправо
|
только атрибуты
|
с <
5 влево
j
|
изображение без атрибутов
|
! 6 вниз
( 1
|
изображение без атрибутов
|
! 7
|
вверх
|
изображение без атрибутов
|
1 8
1
|
вправо
|
изображение без атрибутов
|
! 9
|
влево
|
все изображение
|
I «
|
вниз
|
все изображение
|
i 11
|
вверх
|
все изображение
|
! ^
|
вправо
|
все изображение
|
Единственное синтаксическое различие между
операторами ROLL и SCROLL заключается в том, что последний можно
использовать вообще без параметров. При этом происходит скроллинг всего
экрана вверх на 8 пикселей (одну символьную строку) вместе с атрибутами.