Лекция: Функции и операторы графического режима

CLS — очищает экран дисплея;

VIEW [[SCREEN](x1,y1)-(x2,y2)[,[n][,m]]] — устанавливает окно графического вывода, ограниченное прямоугольной областью с координатами (x1,y1) левого верхнего угла и (x2,y2) правого нижнего угла, где n — числовое выражение: цвет закраски окна; m — числовое выражение: цвет рамки окна вывода. SCREEN-аргумент. Определяет, что координаты (x, y) любой выводимой точки имеют абсолютные значения. Графика выводится только внутри окна. Если SCREEN отсутствует, то внутри окна вывода действуют относительные к границам окна (х1, у1) координаты.

WINDOW [[SCREEN](x1,y1)-(x2,y2)] -устанавливает размеры текущего окна вывода. (x1,y1)-(x2,y2) — числа обычной точности, определяющие координаты прямоугольного окна вывода.

Оператор WINDOW позволяет создать координатную систему для рисования линий, графиков и пр. без задания абсолютных координат на экране. Т.о. координаты всех точек определяются как относительные к данному окну вывода.

Модификация WINDOW SCREEN преобразует направление координаты Y в декартово представление, т.е. значения Y идут от большего к меньшему сверху вниз.

SCREEN n, где n — выражение или константа целого типа, указывает номер режима экрана. Оператор SCREEN используется для выбора режима экрана в соответствии с особенностями аппаратуры видеоадаптера и монитора, этот оператор в программе должен предшествовать любым графическим операторам.

Таблица 10. Параметры основных режимов оператора SCREEN

Режимы (n) Разрешение Число атрибутов Число цветов Примечание
текстовый режим (обычно 25 строк по 80 символов)
320 х 200  
640 х 200
320 х 200
640 х 200
640 х 350
640 х 480 Необходимо применение оператора PALETTE
640 х 480
320 х 200
               

COLOR [n],[m] — устанавливает экранные цвета, где n — цвет переднего плана (букв или графических изображений), m — цвет фона. Например, оп6ратор COLOR 10,4 установит на красном фоне ярко-зеленый цвет букв или графических изображений.

PALETTE [n,m] — изменяет цвет в палитре, где n — атрибут палитры, который нужно изменить (0 — 15), m — цвет, присваиваемый атрибуту, величина длинного, целого типа.

PALETTE USING A%[(i)] — изменяет все атрибуты одновременно, где A% — имя массива длинного, целого типа. Массив А% должен содержать номера цветов, присваиваемых атрибутам текущего режима экрана, i — индекс начального элемента массива, используемый для установки палитры.

PRESET [STEP](x,y)[,n]; PSET [STEP](x,y)[,n] — рисуют точку на экране, где (x,y) — координаты точки на экране. Величины координат, отображаемых на экране точек, зависят от установленного графического режима (оператор SCREEN). Значения координат могут выходить за пределы экрана, но не должны превышать значений (от -32768 до 32767), STEP — указывает, что координаты (x,y) отображаемой точки берутся как приращение к соответствующим координатам предыдущей точки. При отсутствии аргу­мента STEP координаты (x,y) непосредственно указывают физические координаты экрана, n — цвет.

Различие операторов PSET и PRESET состоит в том, что если цвет опущен, в первом случае точка выводится цветом переднего плана, а во втором — цветом фона. На атрибут цвета влияют операторы COLOR и PALETTE.

LINE [[STEP](x1,y1)]-[STEP](x2,y2)[,[n][,[B[F]][,&m]]]рисует линии, контуры прямоугольников, закрашенные прямоугольники. (x1,y1)-(x2,y2) — устанавливают координаты начала и конца отрезка; n — цвет линии, контура или закраски прямоугольника; параметр B устанавливает режим рисования прямоугольника; параметр BF устанавливает режим рисования прямоугольника, закрашенного цветом n; STEP — указывает на относительные координаты (относительно последней точки); &m — параметр «стиль» — 16-битовое целое число. Используется для рисования пунктирных линий.

CIRCLE [STEP](x,y),r[,[n][,[fi1][,[fi2][,k]]]] — рисует эллипс или окружность; (x,y) — координаты центра окружности или эллипса; r — радиус круга или эллипса; STEP — указывает, что (x,y) задаются как смещение относительно текущей позиции графического курсора; n — цвет фигуры; fi1,fi2 — начальный и конечный углы рисования фигуры. Их значения — в диапазоне от -2*PI до 2*PI радиан. При задании положительного угла рисуется лишь дуга, при задании отрицательного угла — та же дуга, но с отрезком, соединяющим точку дуги с центром; k — коэффициент сжатия: отношение радиуса «y» к радиусу «х». По умолчанию его значение соответствует окружности, а его величина зависит от режима.

PAINT [STEP](x,y)[,[n][,[m][,k$]]] — закрашивает графические фигуры; STEP — устанавливает режим отсчета координат относительно текущего положения курсора; (x,y) — координаты начала закраски. Если точка внутри фигуры, то закрашивается сама фигура, если точка вне фигуры то закрашивается фон; n — атрибут цвета; m — атрибут цвета для рамки; k$ — параметр строкового типа, указывает шаблон цвета фона. Этот параметр используется для закраски уже окрашенной области экрана.

Следует отметить, что данный оператор правильно работает лишь в том случае, когда

— закрашиваемая область — замкнута;

— координаты (x,y) задают точку внутри окрашиваемой фигуры;

— окрашиваемая фигура ограничена рамкой цвета m.

VIEW PRINT [n to m] — устанавливает границы текстового окна вывода, где n — числовое выражение: первая строка текстового вывода; m — числовое выражение: последняя строка текстового вывода; если аргументы отсутствуют, окном является весь экран.

POINT (x,y)определяет цвет точки с координатами (x,y).

DRAW «выражение» — рисует фигуру на экране в соответствии с содержимым параметра «выражение», заключенного в кавычки. Оператор позволяет достаточно просто рисовать сложные изогнутые траектории с помощью макроопределений (таблица 12). При этом команда перемещения рисует линию от точки последней ссылки к точке с координатами x,y. Числовые аргументы в макрокомандах должны быть константами.

Таблица 11. Макроопределения оператора DRAW

Команды перемещения
Un Вверх (на n пикселей)
Dn Вниз
Ln Влево
Rn Вправо
En По диагонали вверх и вправо
Fn По диагонали вниз и вправо
Gn По диагонали вниз и влево
Hn По диагонали вверх и влево
Mx,y Перемещение в точку с координатами (x,y)
B Перемещение без отображения
N Перемещение с возвратом в исходную точку
Команды вращения
An Установка угла поворота, кратного PI/2 рад (n=0, 1,2,3)
Tan Поворот на угол n (-360 <= n <= 360 град.). Положительный угол соответствует повороту против часовой стрелки.
Sn Установка масштабного коэффициента n — от 1 до 255. Число точек на экране в масштабной единице равно n/4. По умолчанию n=4.
Команды управления цветом
Cn Установка цвета с номером n
Pp,q Выбор цвета закраски фигуры: p — номер цвета закраски, q — номер цвета границы

LOCATE n, m, i, l, k — используется в текстовом режиме, перемещает курсор на указанную позицию экрана, где n — номер текстовой строки экрана; m — номер позиции в строке; i — двоичное число: делает курсор невидимым при значении «0» и видимым при значении «1»; l, k — начало и конец курсора соответственно, эти параметры управляют размером курсора. по вертикали. В качестве параметров могут быть переменные, арифметические выражения или числа. Все они должны быть целого типа. Любой из этих параметров может быть опущен. Оператор PRINT, следующий за оператором LOCATE, выводит символы на экран, в позиции m строки n. Аналогично оператор INPUT, следующий за оператором LOCATE, запрашивает данные с позиции m, n.

ПРИМЕР 15.1. Сформировать окно на экране (40 <= xэкр<= 200, 80 <= <= yэкр <= 125), соответствующее геометрической области (-5 <= x <= 5, -2 <= y <= 2). Пример на использование операторов WINDOW и VIEW.

SCREEN 9 'Задание разрешения экрана 640 х 350

REM Задание размеров окна на экране в пикселях

VIEW (40, 80)-(200, 125), 3, 7

REM Задание геометрических размеров окна

WINDOW (-5, -2)-(5, 2)

END

В результате выполнения программы на черном экране, слева отобразится прямоугольник бирюзового цвета в белой рамке.

ПРИМЕР 15.2. Нарисовать прямоугольник и заштриховать его в клетку.

CLS

SCREEN 11 'разрешение 640*480

LINE (0, 0)-(250, 250),, B 'рисуется прямоугольник

FOR i = 0 TO 250 STEP 10

LINE (i, 0)-(i, 250) 'вертикальные линии

LINE (0, i)-(250, i) 'горизонтальные линии

NEXT

END

Пояснения к программе:

— горизонтальные линии характерны тем, что координаты по оси Y начальной и конечной точки равны;

— вертикальные линии характерны тем, что координаты по оси Х начальной и конечной точки равны;

— в том случае, если необходимо чтобы штриховка была под углом 45°, то одинаковыми должны быть разноименные координаты (пример 11.3).

ПРИМЕР 15.3.Нарисовать прямоугольник и заштриховать его под углом 45°.

CLS

SCREEN 11

LINE (0, 0)-(250, 250),, B

FOR i = 0 TO 250 STEP 10

LINE (250, i)-(i, 250) ' линии рисуются вправо от диагонали к нижнему углу

LINE (0, i)-(i, 0) ' линии рисуются вправо от верхнего правого угла

NEXT i

END

ПРИМЕР 15.4.Сформировать на экране график двух периодов функции sin(x), использовать в программе операторы WINDOW, VIEW, SCREEN, СOLOR, PSET).

REM Построение синусоиды

SCREEN 9 'Задание разрешения экрана 640 х 350

pi = 3.1415 'Задание числа «пи»

COLOR 12 'Задание цвета

REM Выделяем часть экрана для построения графика

VIEW (20, 50)-(639, 349)

REM Установим удобную систему координат

WINDOW SCREEN (-2 * pi — 1, 1.1)-(2 * pi + 1, -1.1)

REM Формирование синусоиды по точкам

FOR i = 0 TO 4 * pi STEP pi / 32000

PSET (i — 2 * pi, SIN(i))

NEXT i

END

В результате выполнения программы на экран будет выведена синусоида красного цвета.

ПРИМЕР 15.5.Нарисовать на экране квадрат и полукруг; фигуры закрасить, используя в программе операторы LINE, CIRCLE и PAINT.

CLS 'Очистка экрана

SCREEN 9 'задание разрешения экрана 640 х 350 пикселей

REM Задание коэффициента, выравнивающего координаты x и y

a = 3 / 4

CLS 'Очистка экрана

REM Построение квадрата с заданной стороной n в центре экрана

n=100

LINE (320 — n/2, 175 — n/2*a)-(320 + n/2, 175 + n/2*a), 1, BF

REM Построение полукруга

CIRCLE (160, 200), 75, 1, -.0001, -3.14

REM Закраска полукруга

PAINT (160, 199), 2, 1

END

ПРИМЕР 15.6. Построить семейство разноцветных случайным образом расположенных окружностей.

CLS

INPUT N 'вводим количество окружностей

CLS

SCREEN 11 'задание разрешения экрана 640*480

COLOR 2 'устанавливаем цвет переднего плана – зеленый

REM Организуем цикл, в котором рисуются N разноцветных окружностей, REM расположенных случайным образом случайного цвета

FOR i = 1 TO N

X1 = 320 * RND

Y1 = 240 * RND

C = FIX(15 * RND)

CIRCLE(X1, Y1), 15, C

NEXT i

END

ПРИМЕР 15.7.Сформировать на экране текстовое окно с бегущими строками, используя оператор VIEW PRINT.

CLS 'Очистка экрана

REM Установка границ окна: от 10-ой до 12-ой строки

VIEW PRINT 10 TO 15

FOR i% = 1 TO 200

PRINT USING " ###"; i% ;'Форматированный вывод чисел от 1 до 99

FOR j = 1 TO 500000: NEXT j 'Цикл задержки

NEXT i%

END

В результате выполнения программы на экране в строках с 10 по 12 побегут числа от 1 до 200.

ПРИМЕР 15.8. Нарисовать с помощью оператора DRAW «ключ».

SCREEN 11 'Задание разрешения экрана 640 х 350

DRAW «M+25,+25 M+25,-25 M-25,-25 M-25,+25 M-60,+0»

DRAW «M+0,+20 M+10,-10 M+10,+10 M-0,-20»

END

В результате выполнения программы на экране появится графическое изображение ключа.

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

FOR K=1 TO N: NEXT

Значение N подбирается в зависимости от скорости процессора и того эффекта, который хотим получить от выполнения программы.

Таким образом, для программирования движение объекта нужно выполнить следующую последовательность действий:

1. стереть прежнее изображение;

2. задать координаты нового изображения;

3. нарисовать новое изображение;

4. задержать пустым циклом;

5. повторить, начиная с первого пункта.

ПРИМЕР 15.9. Построить на экране движущуюся фигуру, сформиро­ванную оператором DRAW.

SCREEN 9 'задание разрешения экрана 640 х 350

FOR i = 1 TO 300 ' цикл движения

FOR j = 1 TO 100000: NEXT j 'цикл задержки

REM Стирание старой фигуры (цвет — черный)

DRAW «c0e5u11f5r11g5d11h5l11»

REM Задание новой исходной точки:

PSET (173 + i, 177)

REM Формирование новой фигуры (цвет — красный)

DRAW «c12e5u11f5r11g5d11h5l11»

NEXT I

END

В результате выполнения программы на экране отобразится фигура, движущаяся в горизонтальном направлении.

Возможно запрограммировать перемещение объекта по командам с клавиатуры.

ПРИМЕР 15.10.Нарисовать фигуру робота, способного перемещаться по четырем направлениям в соответствии с нажатием клавиш управления.

SCREEN 12 'задание разрешения экрана 640*480

x = 100: y = 240 'задаем начальные координаты

50 PSET (x, y)

REM Рисуем фигуру

DRAW «c1r20d10r10d30l10u20d50l10u30d30l10u50d20l10u30r10u10»

100 A$ = INKEY$ 'запрашивается состояние клавиатуры

IF A$ = "" THEN GOTO 100 'при отсутствии нажатия запрос повторяется

REM в противном случае объект стирается (рисуется черным на черном)

DRAW «c0r20d10r10d30l10u20d50l10u30d30l10u50d20l10u30r10u10»

REM При нажатии клавиши «u» или «U» движение вверх

REM При нажатии клавиши «d» или «D» движение вниз

REM При нажатии клавиши «l» или «L движение влево

REM При нажатии клавиши „r“ или „R“ движение вправо

IF A$ = „U“ OR A$ = „u“ AND y > 5 THEN y = y — 5

IF A$ = „D“ OR A$ = „d“ AND y < 450 THEN y = y + 5

IF A$ = „L“ OR A$ = „l“ AND x > 5 THEN x = x — 5

IF A$ = „R“ OR A$ = „r“ AND x < 600 THEN x = x + 5

IF A$ = „E“ OR A$ = „e“ then end

GOTO 50

END

ПРИМЕР 15.11.Построить движение круга слева направо до границы экрана.

CLS

INPUT R 'задание радиуса круга

CLS

SCREEN 9 'задание разрешения экрана 640 х 350

Y = 175 'круг будет двигаться в средней части экрана

FOR X = R TO 640-R STEP 2 ' шаг задает величину смещения по оси Х

CIRCLE (X, Y), R, 4 'рисуется круг красного цвета

FOR j = 0 TO 100000: NEXT 'цикл задержки

CIRCLE (X, Y), R, 0 'рисуется круг черного цвета

FOR j = 0 TO 100000: NEXT 'цикл задержки

NEXT

END

Пояснения к программе:

— при написании данной программы необходимо учитывать, что при движении слева направо координата X увеличивается, а координата Y не изменяется.

ПРИМЕР 15.12.Построить движение секундной стрелки по часовому циферблату.

CLS

SCREEN 7 'задание разрешения экрана 320 х 200

REM Формируем простой циферблат

CIRCLE(160, 100), 75, 9

LINE (160, 40)-(160, 38), 9

LINE (160, 160)-(160, 162), 9

LINE (85, 100)-(87, 100), 9

LINE (235, 100)-(233, 100), 9

X1 = 160

Y1 = 100

REM Организуем два цикла

REM Внешний цикл позволяет завершить движение стрелки

DO WHILE INKEY$ <> „“

REM Внутренний цикл изменяет угол движения стрелки

FOR I = 90 TO -270 STEP -6 'шаг задает величину смещения по оси Х

RAD = I * 3.141593 / 180 'переводим градусы в радианы

X2 = X1 + 60 * COS(RAD)

Y2 = Y1 – 60 * SIN(RAD)

LINE (X1, Y1)-(X2, Y2), 2 'рисуем стрелку зеленым цветом

FOR j = 0 TO 100000: NEXT 'цикл задержки

LINE (X1, Y1)-(X2, Y2), 0 'стираем стрелку

FOR j = 0 TO 100000: NEXT 'цикл задержки

NEXT I

LOOP

END

Пояснения к программе:

— для решения данной задачи необходимо воспользоваться параметрическим уравнением окружности: X = X0 + R * COS(a): Y = Y0 – R * SIN(a);

— при изменении угла от 0 до 360 конец радиуса вычертит окружность. Секундная стрелка за 60 сек. делает один оборот; следовательно за каждый такт (секунду) она сдвигается на 6 градусов.

еще рефераты
Еще работы по информатике