Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QBasic_metodichka.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
349.7 Кб
Скачать

8. Работа с графикой

Программные средства языка Бейсик позволяют работать не только с текстовой, но и с графической информацией. Это обеспечивается языком графики, псевдографическими символами, набором операторов и функций. Работа с графической информацией требует графических дисплеев.

Цветные графические дисплеи позволяют полностью реализовать все программные графические возможности, заложенные в языке Бейсик.

Операторы и функции, используемые при работе с графикой

Номер п/п

Оператор или функция

Назначение

1. Операторы

1

CIRCLE

Построить эллипс (окружность)

2

COLOR

Выбрать цвет

3

DRAW

Изобразить сложную фигуру (объект)

4

GET

Передать изображение в массив

5

LINE

Начертить линию (отрезок)

6

PAINT

Окрасить фигуру (объект)

7

PSET

Изобразить точку

8

PRESET

Убрать свечение точки

9

PUT

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

10

SCREEN

Установить режим работы дисплея

11

VIEW

Установить на экране "окно"

12

WINDOW

Установить систему координат "окна"

2. Функции

13

PMAP

Определить одну координату точки

14

POINT

Определить две координаты точки или ее цвет

15

SCREEN

Определить атрибуты в заданной позиции активной страницы буфера экрана

Элементарным изобразительным средством графического экрана является черно-белая или цветная точка разной степени свечения. Местоположение всех точек на экране образуют прямоугольную систему координат из горизонтальных строк (х) и вертикальных колонок (у). Количество точек, которое может быть размещено на экране, зависит от разрешающей способности (средней или высокой). При средней разрешающей способности горизонтальная строка содержит 320 точек, вертикальная - 200 точек. При высокой разрешающей способности горизонтальная строка содержит 640 точек, вертикальная - 200. Разрешающая способность устанавливается оператором SCREEN.

Оператор SCREEN устанавливает режим и параметры работы дисплея,

Формат записи оператора SCREEN:

SCREEN [,[цветное- изображение], [активная-страница]

[, отображаемая-страница]]

Ниже приведены примеры записи оператора SCREEN

SCREEN 1,1 средняя разрешающая способность; ширина текстовой строки 40 колонок:

SCREEN 2 средняя разрешающая способность; ширина текстовой строки 80 колонок.

Чтобы перейти от графического режима к текстовому, следует выбрать оператор:

SCREEN 0,0,0

Отметим, что перед этим оператором может потребоваться еще один дополнительный оператор SCREEN 2, если в текстовом режиме была установлена ширина строки 80.

Можно переход к текстовому режиму выполнить с клавиатуры, нажав функциональную клавишу F10.

Палитры цветов для переднего плана

Изображение

Номер цвета

Палитра 0

Палитра 1

0

Цвет фона

Цвет фона

Цветное

1

Зеленый

Голубой

2

Красный

Пурпурный

3

Коричневый

Белый

Черно-

0

Черный

белое

1

Белый

2

Черный

3

Белый

После оператора SCREEN используется оператор COLOR, который позволяет выбрать фон и палитру цветов для переднего плана. Имеются две палитры цветов: 0 и 1. Каждая палитра содержит три цвета.

Формат записи оператора COLOR:

COLOR [фон] [, палитра- цветов- переднего- плана]

Для цветного изображения фон выбирается из таблицы (значение от 0 до 15). Следует заметить, что фон всегда совпадает с окаймлением в графическом режиме.

Цвета, используемые при цветном графическом и текстовом режимах

Номер цвета

Передний план

Окаймление

Фон

0

Черный

Черный

Черный

1

Синий

Синий

Синий

2

Зеленый

Зеленый

Зеленый

3

Голубой

Голубой

Голубой

4

Красный

Красный

Красный

5

Пурпурный

Пурпурный

Пурпурный

6

Коричневый

Коричневый

Коричневый

7

Белый

Белый

Белый

8

Серый

Серый

9

Светло-синий

Светло-синий

10

Светло-зеленый

Светло - зеленый

11

Светло-голубой

Светло-голубой

12

Розовый

Розовый

13

Светло - пурпурный

Светло - пурпурный

14

Желтый

Желтый

15

Белый насыщенный

Белый насыщенный

16

Черный мерцающий

17

Синий мерцающий

18

Зеленый мерцающий

19

Голубой мерцающий

20

Красный мерцающий

21

Пурпурный мерцающий

22

Коричневый мерцающий

23

Белый мерцающий

24

Серый мерцающий

25

Светло-синий мерцающий

26

Светло - зеленый мерцающий

27

Светло-голубой мерцающий

28

Розовый мерцающий

29

Светло-пурпурный мерцающий

30

Желтый мерцающий

31

Белый насыщенный мерцающий

Получение простейших геометрических фигур

С помощью графических операторов можно получить следующие изображения:

точки - операторы RSET и PRESET;

отрезка прямой - оператор LINE;

окружности - оператор CIRCLE.

Синтаксис этих графических операторов и примеры приведены в Справке Бейсика.

Пример. Графически построить изображение циферблата часов с передвижением стрелок, соответствующих текущему времени.

DECLARE FUNCTION SEC! (T!)

CLS

SCREEN 7

KI = SEC(0)

PI = 3.1415

WINDOW (-10, -10)-(10, 10)

PSET (0, 0), 15

FOR I = 0 TO 360 STEP 6

PSET (0, 0)

DRAW "TA=" + VARPTR$(I) + " BD75D5"

NEXT

FOR I = 0 TO 360 STEP 30

PSET (0, 0)

DRAW "TA=" + VARPTR$(I) + "BD70C2D10"

NEXT

FOR I = 0 TO 360 STEP 90

PSET (0, 0)

DRAW "TA=" + VARPTR$(I) + "BD66C14D14"

NEXT

COLOR 11, 0

LOCATE 2, 19: PRINT 12

LOCATE 3, 26: PRINT 1

LOCATE 7, 31: PRINT 2

LOCATE 13, 33: PRINT 3

LOCATE 19, 31: PRINT 4

LOCATE 23, 26: PRINT 5

X = -.2: Y = -8.5

FOR I = 1 TO 8

FOR J = 1 TO 8

READ C: PSET (X, Y), C: X = X + 1 / 16

NEXT

X = -.2: Y = Y - 1 / 10

NEXT

DATA 0,0,11,11,11,0,0,0

DATA 0,11,11,0,0,0,0,0

DATA 11,11,0,0,0,0,0,0

DATA 11,11,11,11,11,0,0,0

DATA 11,11,0,0,11,11,0,0

DATA 11,11,0,0,11,11,0,0

DATA 0,11,11,11,11,0,0,0

DATA 0,0,0,0,0,0,0,0

LOCATE 23, 13: PRINT 7

LOCATE 19, 8: PRINT 8

LOCATE 13, 6: PRINT 9

LOCATE 7, 7: PRINT 10

LOCATE 3, 12: PRINT 11

X$ = TIME$

Y$ = MID$(X$, 7, 2)

T = VAL(Y$)

Z$ = MID$(X$, 4, 2)

L = VAL(Z$)

ZZ$ = MID$(X$, 1, 2)

AA = VAL(ZZ$)

IF AA >= 12 THEN AA = AA - 12

C = FIX(L / 12)

H = 180 - AA * 30 - C * 6

PSET (0, 0)

DRAW "TA=" + VARPTR$(H) + "C14ND50"

DO WHILE 1

FOR J = 180 - L * 6 TO -174 STEP -6

PSET (0, 0)

DRAW "TA=" + VARPTR$(J) + "C15ND60"

IF (J + 180) / 72 = (J + 180) \ 72 THEN

PSET (0, 0)

H = H - 6

Q = H + 6

DRAW "TA=" + VARPTR$(Q) + "C0ND50"

DRAW "TA=" + VARPTR$(H) + "C14ND50"

END IF

FOR K = 180 - T * 6 TO -174 STEP -6

PSET (0, 0)

DRAW "TA=" + VARPTR$(K) + "C4ND65"

IF J = K + 6 THEN

PSET (0, 0)

DRAW "TA=" + VARPTR$(J) + "C15ND60"

END IF

IF H = -180 THEN H = 180

IF H = J + 6 OR H = K + 6 OR H = -174 AND (K = 180 OR J = 180) THEN

PSET (0, 0)

DRAW "TA=" + VARPTR$(H) + "C14ND50"

END IF

D = SEC(KI)

M$ = INKEY$

IF M$ = CHR$(27) THEN EXIT DO

DRAW "TA=" + VARPTR$(K) + "C0ND65"

NEXT

T = 0: L = 0

PSET (0, 0)

DRAW "TA=" + VARPTR$(J) + "C0ND60"

NEXT

LOOP

FUNCTION SEC (T)

IF T = 0 THEN KON = 10000000 ELSE KON = T

F$ = TIME$

FOR I = 1 TO KON

IF F$ <> TIME$ THEN

IF VX = 0 THEN

NI = I

F$ = TIME$

VX = 1

ELSE

KI = I

EXIT FOR

END IF

END IF

NEXT I

SEC = KI - NI

END FUNCTION

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]