Работа с графикой. Создание простейших графических изображений.
Оценка 4.9

Работа с графикой. Создание простейших графических изображений.

Оценка 4.9
doc
информатика
06.05.2020
Работа с графикой. Создание простейших графических изображений.
Работа с графикой. Создание простейших графических изображений.
47-48_Работа с графикой.doc

Практическая работа № 47-48.

Тема: Программирование.

Наименование: Работа с графикой. Создание простейших графических изображений.

Цель работы: Ознакомить с операторами работы с графикой. Научить составлять, вводить, редактировать и отлаживать программ работы с графикой.

1. Краткие теоретические сведения.

Работа с монитором в графическом режиме

В графическом режиме минимальным элементом, который можно вывести на экран, является не символ, а пиксель. Пиксель (точка экрана) представляет собой крошечный прямоугольник, размеры которого зависят от установленного графического режима. Верхняя левая точка экрана имеет координату (0,0), ось ОХ направлена вправо, ось ОY – вниз, т.е. чем ниже на экране расположена точка, тем больше ее координата по оси OY..

Оператор SCREEN номер режима переводит режим работы экрана из текстового в графический с заданным номером. Если оператор SCREEN не указан, то подразумевается текстовый режим. Текстовый режим имеет номер 0, поэтому, если нужно из графического режима перейти в текстовый, следует использовать SCREEN 0. Иногда при возврате из графического режима (например, из SCREEN 7) символы текста становятся широкими. Вернуть им нормальные размеры можно только оператором WIDTH 80. Графические режимы различаются разрешением (количеством “точек”) экрана и количеством возможных цветов.

Например, SCREEN 7 устанавливает разрешение экрана в 320 точек по горизонтали и 200 точек по вертикали. Положение произвольной точки на экране задается двумя числами (x, y) в экранной системе координат. От декартовых координат эта система отличается тем, что ось Oy направлена вниз, а не вверх.

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

Рисование точек и линий

Оператор PSET (x, y)[, цвет] закрашивает точку экрана заданным цветом.

Оператор LINE (x1, y1)-(x2, y2)[, цвет] рисует отрезок, соединяющий на экране точки с координатами (x1, y1) и (x2, y2)

Оператор LINE - (x2, y2)[, цвет] рисует отрезок, соединяющий последнюю выведенную на экран точку с точкой (x2, y2).

Цвет в этих операторах задается числом от 0 до 15. Если цвет в графических операторах не указан, то все линии рисуются белым цветом. (О том, какие могут быть цвета в различных графических режимах, рассмотрим позже.)

 

Пример 1. Соединить точки с координатами (20, 45) и (38, 144).

Первый способ:

LINE (20, 45)-(38, 144)

Второй способ:

PSET (20, 45)

LINE -(38, 144)

 


Пример 2. Программа вычерчивания треугольника.

REM Треугольник

CLS

SCREEN 7

LINE (20,45) - LINE (38,144)

LINE - (100,95)

LINE - (20,45)

Задание 1. Построить на экране домик. Записать программу “Домик” в файл HOUSE.BAS.

Указания: Перед написанием программы нарисуйте в тетради рисунок домика с указанием координат угловых точек.

Прямоугольники и квадраты

Рисовать домик отдельными линиями - не самый рациональный способ. Легко увидеть, что домик представляет собой прямоугольник с крышей из двух отрезков. (Так рисуют домик почти все, кроме гениальных фантазеров и профессиональных художников.) А нарисовать прямоугольник можно одним оператором

LINE (x1, y1)-(x2, y2), [цвет], B

Этот оператор рисует рамку-прямоугольник со сторонами, параллельными границам экрана. Точки (x1, y1) и (x2, y2) суть две вершины прямоугольника, расположенные по одной из его диагоналей. Если параметр цвет отсутствует, то будет нарисована белая рамка. (Но “лишняя” запятая должна остаться!)

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

LINE (20, 20)-(120, 120), , B

потерпит неудачу. Высота этого “квадрата” окажется больше, чем ширина, хотя обе стороны содержат одинаковое число пикселей. Уменьшим число точек в высоте “квадрата” в 1,2 раза (для SCREEN 1!) или во столько же раз увеличим ширину “квадрата” - только тогда мы получим истинный квадрат. Поправочный коэффициент назовем “коэффициентом вытянутости” пикселя.

Оператор LINE (x1, y1)-(x2, y2), [цвет], BF рисует такой же, но закрашенный прямоугольник.

Задача. Нарисовать на экране пирамиду из 10 ступенек-прямоугольников.

Решение. Воспользуемся тем, что пирамида имеет осевую симметрию. Расположим ось пирамиды посредине экрана. Пронумеруем прямоугольники сверху вниз числами от 1 до 10. Очевидно, что значения x1, y1, x2, y2 зависят от номера прямоугольника. В силу симметрии, чтобы получить x1, нужно от 160 вычесть что-то, а чтобы получить x2 - прибавить столько же.

Составим вспомогательную табличку.

Номер ступеньки

x1

x2

1

160 - 10

160 + 10

2

160 - 20

160 + 20

3

160 - 30

160 + 30

...

...

...

10

160 - 100

160 + 100

Легко заметить, что номер ступеньки-прямоугольника и величина добавки связаны зависимостью

добавка = 10*номер.

Если обозначить через k номер ступеньки, получим формулы для вычисления x1 и x2:

x1 = 160 - 10*k

x2 = 160 + 10*k

Значения y1 и y2 также зависят от номера и высоты ступеньки h, где h - некоторая заранее заданная величина (например, h = 10):

y1 = 40 + h*k

y2 = y1 + h

Теперь можно составить программу.

CLS: SCREEN 7
h = 10
FOR k = 1 TO 10
   x1 = 160 - 10*k
   x2 = 160 + 10*k
   y1 = 40 + h*k
   y2 = y1 + h
   LINE (x1, y1)-( x2, y2), , B
NEXT k

Задание 2. Запишите программу под именем PIRAMIDA.BAS. Измените высоту, ширину, цвет ступенек. Составьте пирамиду из закрашенных прямоугольников; из закрашенных прямоугольников с рамкой другого цвета.

Заметим, что использование переменной h для обозначения высоты ступенек позволяет проще изменять высоту ступеньки.

Окружности и дуги

Оператор CIRCLE (x, y), радиус[, цвет] рисует окружность заданного радиуса и цвета с центром в точке (x, y). Если вся окружность на экране не поместится, то будет нарисована только ее часть. Радиус окружности задается в пикселях, но такое количество пикселей укладывается только по горизонтали. Размер вертикального радиуса (в пикселях) зависит от номера графического режима.

Задача. Нарисовать несколько концентрических окружностей (“мишень”).

Решение.

SCREEN 7
FOR R = 5 TO 65 STEP 5
   CIRCLE (160, 100), R, 3
NEXT R

Задание 3. Запишите программу под именем MISHEN.BAS. Сделайте шаг в цикле равным 3, 2, затем 1 (но не 0, так как программа “зациклится”!). Объясните возникающий при этом эффект. Измените положение “мишени” на экране так, чтобы ее часть ушла за экран. Введите зависимость положения центра окружности от ее радиуса. Поэкспериментируйте с несколькими разноцветными “мишенями”.


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

CIRCLE (x, y), радиус, [цвет], нач_угол, кон_угол

Если поместить в точку (x, y) начало математической системы координат, то начальный и конечный углы откладываются от оси Ox в направлении против часовой стрелки.

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

Углы дуги должны задаваться в радианах. Поскольку это не всегда удобно, рекомендуетcz переводить градусы в радианы каждый раз, как это потребуется. Коэффициент пропорциональности QR вычисляется по формуле QR = p/180, где p=3,1415926536 всем известная константа. Конечно, можно использовать и конкретное значение коэффициента: QR = 0.0174329252.

Пример. Изобразите на листе бумаги, что получится на экране после выполнения программы:

CLS: SCREEN 7
QR = 0.0174329252
CIRCLE (100, 50), 60, 2, 270*QR, 0
CIRCLE (220, 50), 60, 2, 180*QR, 270*QR
CIRCLE (100, 150), 60, 2, 0, 90*QR
CIRCLE (220, 150), 60, 2, 90*QR, 180*QR

Правильность ответа проверьте на компьютере.

Замечание. Математики рассматривают как положительные, так и отрицательные углы. В операторе CIRCLE также могут использоваться отрицательные значения для начального и конечного углов, однако здесь знак минус “сообщает”, что следует не только нарисовать дугу, но и провести один или оба радиуса. Измените предыдущую программу, посмотрите, что получится на экране. Учтите, что с точки зрения Quick Basic’а “отрицательный” нуль ничем не отличается от обычного, поэтому замените его очень маленьким отрицательным числом, например, - 0.001.

 

Графические режимы

SCREEN 1 - это устаревший графический режим, используемый в Quick Basic только для совместимости с некоторыми мониторами. В этом режиме доступны одновременно только 4 цвета (включая цвет фона). Одному и тому же номеру соответствуют разные цвета в зависимости от выбранной палитры:

Номер цвета

Палитра №1

Палитра №2

1

голубой (3)

зеленый (2)

2

фиолетовый (5)

красный (4)

3

белый (7)

коричневый (6)

Оператор COLOR в этом режиме имеет свой особый синтаксис:

COLOR цвет_фона, номер_палитры

Выбор цвета фона намного богаче - он может быть любым из 16 основных цветов (от 0 до 15).

По умолчанию SCREEN 1 устанавливает первую палитру.

SCREEN 2 задает разрешение 640 точек по горизонтали на 200 точек по вертикали. В этом графическом режиме возможны только два цвета - черный и белый, заданные “раз и навсегда”. Использование оператора COLOR в этом режиме некорректно и вызовет сообщение об ошибке “Illegal function call” (“Недопустимый вызов функции”).

Высота пикселя в этом режиме больше его ширины в 2.4 раза.

SCREEN 7 задает разрешение 320 точек по горизонтали на 200 точек по вертикали, следовательно, “коэффициент вытянутости” пикселя, как и в SCREEN 1 равен 1.2..

В этом и следующих режимах оператор COLOR управляет цветом линий, цветом фона экрана и цветом символов текста. Можно указывать цвет рисования и в каждом графическом операторе (если цвет пропущен, то линия рисуется цветом, заданным в операторе COLOR, а если нет и оператора - то ярко-белым цветом). Оператор COLOR имеет следующий вид:

COLOR цвет_линии, цвет_фона

Цвет линии - число от 0 до 15, цвет фона - число от 0 до 7. Заданные параметры распространяются и на текстовый вывод, но в отличие от текстового режима нельзя вывести на экран мигающие символы. Кроме того, изменение цвета фона действует и на уже выведенный текст!

SCREEN 8 задает разрешение 640 точек по горизонтали на 200 точек по вертикали (“коэффициент вытянутости” = 2.4), а SCREEN 9 - 640 точек по горизонтали на 350 точек по вертикали. Точное значение “коэффициента вытянутости“ в SCREEN 9 равно 48/35. что практически равно 1.37.

При работе в любом графическом режиме следует задать 2 цвета — цвет фона и основной цвет. В указанных графических режимах в любом адаптере (за исключением, быть может, SVGA) используется 16 цветов, определяемых каждый своим номером, а именно:

0

 

— черный;

 

8 — темно-серый;

 

1

 

— синий;

 

9 — ярко-синий;

 

2

 

— зеленый;

 

10 — ярко-зеленый;

 

3

 

— голубой;

 

11 — ярко-голубой;

 

4

 

— красный;

 

12 — ярко-красный;

 

5

 

— розовый;

 

13 — ярко-розовый;

 

6

 

— коричневый;

 

14 — желтый;

 

7

 

— светло-серый;

 

15 — белый.

 

Для мониторов типа VGA и SVGA возможны и другие графические режимы. Чаще всего используются режим SCREEN 12 с разрешением 640 точек по горизонтали на 480 точек по вертикали, в котором “коэффициент вытянутости” в точности равен 1. Однако в этом режиме в операторе COLOR указывается только один параметр - цвет линии (символа). Цвет фона оператором не задается!

Задание 5. Загрузите программу PIRAMIDA.BAS и посмотрите результат выполнения в рассмотренных графических режимах. Сделайте ступеньки пирамиды разных цветов. Подпишите рисунок (используйте оператор COLOR для задания цвета фона и символов текста).

Закраска произвольной области

Если на экране нарисована замкнутая кривая, то область внутри нее можно закрасить. Также можно закрасить и область, оставшуюся снаружи от кривой. Для этого используется оператор

PAINT (x, y), цвет_закраски, цвет_границы

Точка (x, y) должна попасть внутрь области, подлежащей закрашиванию.

Если граница области “дырявая”, то краска выльется за пределы области, даже если дырка всего в один пиксель. То же самое произойдет, если граница области содержит по недосмотру кусочек другого цвета - для оператора PAINT это все равно что дырка.

Пример. Нарисовать флаг Японии - красный круг на белом фоне.

REM Флаг Японии

SCREEN 7
LINE (10, 10)-(100, 50), 15, BF
CIRCLE (55, 30), 20, 12
PAINT (55, 30), 12, 12

 

 

Задание 5. Нарисовать флаги России. Сохраните файл под именем FLAG.BAS

При закраске окружности в качестве начальной точки для оператора PAINT удобно брать центр окружности, в других случаях, особенно при закраске маленьких областей, легко “промахнуться” мимо области. Чтобы проконтролировать расположение начальной точки, заменим оператор PAINT оператором PSET(x, y). Убедимся в том, что точка (x, y) попала в нужное место, и после этого вернем оператор PAINT на свое законное место.

2. Задания.

1. Внимательно изучите теоретический материал.

2. Запустите программу c:\QBasic\qbasic.exe.

3. Наберите программу, приведенную в заданиях 1-5 раздела 1. Сохраните созданные файлы под указанными именами в папку своей группы.

4. Задания для самостоятельной работы

Составьте программы, которые выводят на экран следующие картинки:

 

3. Оформление отчета:

1. Переписать основные графические операторы, графические режимы работы монитора из методического пособия в тетрадь.

2. Выполнить п.п. 2-4 задания. Программы задания 4 сохранить под именами ris_1.basris_6.bas в папку своей группы.

3. Дать ответы на контрольные вопросы и объяснить их.

4. Контрольные вопросы.

1.    Какими параметрами характеризуется графический монитор?

2.    Каковы основные графические операторы языка Бейсик?


3.    Скачано с www.znanio.ru

Практическая работа № 47-48.

Практическая работа № 47-48.

Пример 2. Программа вычерчивания треугольника

Пример 2. Программа вычерчивания треугольника

Легко заметить, что номер ступеньки-прямоугольника и величина добавки связаны зависимостью добавка = 10*номер

Легко заметить, что номер ступеньки-прямоугольника и величина добавки связаны зависимостью добавка = 10*номер

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

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

Использование оператора COLOR в этом режиме некорректно и вызовет сообщение об ошибке “Illegal function call” (“Недопустимый вызов функции”)

Использование оператора COLOR в этом режиме некорректно и вызовет сообщение об ошибке “Illegal function call” (“Недопустимый вызов функции”)

PAINT это все равно что дырка.

PAINT это все равно что дырка.

Оформление отчета: 1. Переписать основные графические операторы, графические режимы работы монитора из методического пособия в тетрадь

Оформление отчета: 1. Переписать основные графические операторы, графические режимы работы монитора из методического пособия в тетрадь
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
06.05.2020
Посмотрите также: