Графический режим. Инициализация графического режима. Построение точки, линии - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Линии переключения на фазовой плоскости 1 50.3kb.
Практическая работа по теме «графический редактор paint» 1 118.83kb.
"Построение кластера высокой доступности на основе осрв qnx neutrino" 9 688.09kb.
Успешно завершить История режим блокировки жесткого трудность, которая... 1 101.14kb.
Льшим объемам информации без отсылок к внешней базе данных 1 58.53kb.
Как нарисовать портрет карандашом, Построение головы. Фас. Пропорци 1 56.81kb.
Конспект урока по теме "Компьютерная графика. Графический редактор... 1 53.73kb.
Практические задания для формирования навыка применения знаний по... 6 621.31kb.
Организация режима пребывания детей в рдг 1 83.36kb.
Рисование в Delphi. Графический режим. Рисовать в Delphi можно, используя... 1 112.08kb.
Поле графического проектирования 2 Организация графических данных... 1 135.63kb.
Ответы к заданиям II (районно-городского) этапа Всероссийской олимпиады... 3 502.29kb.
Направления изучения представлений о справедливости 1 202.17kb.

Графический режим. Инициализация графического режима. Построение точки, линии - страница №1/1

Графика

Занятие I

Тема: Графический режим. Инициализация графического режима. Построение точки, линии.

Стандартное состояние компьютера после запуска Турбо Паскаля – текстовый режим. Для того, чтобы использовать его графические средства, программист должен "определенным образом инициировать режим работы дисплейного адаптера". В графическом режиме работой дисплейного адаптера управляет графический драйвер.



Драйвер – это специальная программа, которая управляет техническими средствами компьютера. Для всех существующих типов адаптеров фирма Borland разработала графические драйверы (они имеют расширение .bgi и находятся на диске в одноименном подкаталоге).

Необходимые процедуры и функции для работы с графикой собраны стандартном модуле – Graph.

Инициализация графики производится с помощью процедуры InitGraph, которая имеет вид:

InitGraph(GraphDriver, GraphMode, Path);

где переменные GraphDriver и GraphMode имеют тип Integer, а переменная Path имеет тип String.

То, что записано в скобках, называется параметрами вызова процедуры (подробнее с данным вопросом мы ознакомимся позднее в теме “Процедуры и функции”), а сейчас рассмотрим параметры GraphDriver, GraphMode и Path.

GraphDriver – целая переменная, определяющая тип драйвера. Процедура загружает драйвер в оперативную память и переводит адаптер в графический режим работы. Тип драйвера должен соответствовать типу графического адаптера. Для указания типа драйвера в модуле предопределены следующие константы:

CGA

1

EGA

3

EGAMono

5

HercMono

7

VGA

9

MCGA

2

EGA64

4

IBM8514

6

ATT400

8

PC3270

10

Detect = 0;

Целая переменная GraphMode задает режим работы графического адаптера. Многие адаптеры могут работать в нескольких режимах. Например, переменная GraphMode в момент обращения к InitGraph может иметь одно из следующих значений для адаптера VGA:

VGALo = 0; VGAMed = 1; VGAHi = 2;

Примечание: Более подробно о переменной Mode можно узнать в справочном руководстве по TurboPascal.

Теперь представьте такой вариант: Вам нужно написать программу на языке Pascal с использованием графических возможностей компьютера. Хорошо, если это – программа для компьютера с известным адаптером. А если нет, как действовать в этом случае? Выход один. Если нам неизвестен тип адаптера или программа должна работать с любым адаптером, необходимо обращаться к InitGraph с запросом на автоматическое определение драйвера.

Это происходит следующим образом: переменной GraphDriver присваиваем значение detect. В этом случае компьютер сам определит необходимый драйвер и подберет наилучший режим.

Program Primer1;



Uses

Graph;{Подключение модуля библиотеки графических процедур}

Var


GraphDriver,

GraphMode : integer;

Begin


GraphDriver := detect; {автоопределение типа драйвера }

InitGraph(GraphDriver, GraphMode, Path);

{Инициализация графического режима}

. . .

. . .


. . .СloseGraph;{Закрытие графического режима}

End.


Для получения графического изображения нужно заставить светиться заданным цветом определенную группу пикселей (точек). Это можно делать в программе, но ваша работа тогда станет очень трудоёмкой. Чтобы облегчить труд программиста существует модуль Graph, в котором содержиться 79 полезных процедур и функций, десятки стандартных констант и типов данных (например, процедуры рисования линии, окружности и др.). Чтобы воспользоваться этим модулем нужно сначала его подключить. Для этого в программе записывают строчку: Uses Graph.

Условно весь модуль Graph можно подразделить на несколько функциональных групп по выполняемым действиям. Рассмотрим эти группы (внутри групп взяты основные функции, необходимые нам для первоначального ознакомления с графикой):



1) Инициализация графики, подготовительные работы, управление цветом, закрытие режима:

InitGraph

установление (инициализация) графического режима работы

CloseGraph

завершение работы с графикой

DetectGraph

определение драйвера

FloodFill

заливка замкнутого контура выбранным типом и цветом палитры

RestoreCRTMode

возврат в текстовый режим

SetBkColor

выбор и установка нового цвета закраски фона

SetColor

выбор и установка нового текущего цвета

SetFillStyle

выбор и установка нового шаблона и цвета заполнения

2) Процедуры и функции для управления курсором и видеостраницами:

ClearDevice

очистка текущего устройства вывода

ClearViewPort

очистка текущего окна

GetMaxX

получение максимально доступной координаты по оси X

GetMaxY

получение максимально доступной координаты по оси Y

GetPixel

получение текущего цвета точки экрана

GetX

получить значение координаты X

GetY

получить значение координаты Y

MoveRel

переместить курсор из данной текущей точки на заданное приращение.

MoveTo

переместить курсор из данной текущей точки в заданную точку

3). Процедуры и функции для работы с "графическими примитивами":

Arc

Рисует дугу

Bar

Рисует полосу

Bar3D

Рисует трехмерную полосу

Circle

Рисует окружность

DrawPoly

Рисует многоугольник

Ellipse

Рисует эллиптическую дугу или эллипс

FillEllipse

Рисует заполненный эллипс

FillPoly

Заполняет многоугольник

Line, LineRel, LineTo

Рисует линию

Rectangle

Рисует прямоугольник

Sector

Рисует сектор эллипса

PutPixel

Рисует точку

4) Процедуры для работы с текстом

OutText

Вывод текста

OutTextXY

Вывод текста

Итак, для запуска графической системы нам необходимо:

1. Подключить модуль GRAPH – библиотеку графических процедур:

Uses Graph;

2. Установить графический режим с помощью двух переменных:

Var

GraphDriver, GraphMode: integer;



Begin

GraphDriver:=detect;

InitGraph(GraphDriver, GraphMode, '..\BGI');

{С этого момента все графические средства доступны пользователю}

{ тело программы }

CloseGraph;

End.

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

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

F10 – Options – Directories

В окне EXE&TPU directory набрать ..\BGI

Клавишей TAB перейти к окну Unit directories и набрать ..\BGI

Клавишей TAB перейти к ОК и нажать Enter.

Система координат в графическом режиме.

Любая информация при работе в графическом режиме на экране монитора представлена совокупностью светящихся точек – пикселей, которые определяются цветом и координатами – положением относительно левого верхнего угла экрана с координатами (0,0).

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

Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу:

Uses Graph;

Var


GraphDriver, GraphMode: integer;

Begin


GraphDriver:=detect;

InitGraph(GraphDriver, GraphMode, ‘..\BGI’);

Writeln(GetMaxX, 'x', GetMaxY);

Readln;


CloseGraph;

End.


Примечание. Для нашего графического режима обычно значение максимальной координаты X равно 640 пикселям, а Y– 480 пикселям.

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


x

Итак, отсчет начинается с верхнего левого угла с координатами (0;0), значение Х – столбец, отсчет слева направо; значение Y – строка, отсчет сверху вниз.

Чтобы строить изображение, нужно указать точку начала вывода. В графическом режиме нет видимого курсора, но есть так называемый невидимый текущий указатель (Current Pointer). После инициализации графического режима указатель стоит в точке (0;0). Чтобы переместить его в нужное место используют следующие процедуры:

MoveTo (X, Y), где переменные X, Y типа Integer – перемещает текущий указатель в точку с координатами (X,Y).

Например, MoveTo (200, 100)

MoveRel (dX, dY), где переменные dX, dY типа Integer – перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям. (Relation (англ.) – относительно)

Например, если после выполнения предыдущей процедуры текущий указатель находится в точке (200, 100), то после выполнения процедуры MoveRel (25, 150) он будет находится в точке с координатами (225, 250).

PutPixel(X, Y, Color), где переменные X, Y типа Integer, а Color типа Word – процедура выводит точку заданного цвета Color в точку с координатами (X, Y).

Задание. Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.

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



Цвет

Цвет

Код

Black

черный

0

Blue

синий

1

Green

зеленый

2

Cyan

бирюзовый

3

Red

красный

4

Magenta

малиновый

5

Brown

коричневый

6

LightGray

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

7

DarkGray

темно-серый

8

LightBlue

ярко-голубой

9

LightGreen

ярко-зеленый

10

LightCyan

ярко-бирюзовый

11

LightRed

ярко-красный

12

LightMagenta

ярко-малиновый

13

Yellow

желтый

14

White

белый

15

Line (X1, Y1, X2, Y2), где переменные X1, Y1, X2, Y2 типа Integer – рисуется линия от точки (X1, Y1) до точки (X2, Y2).

LineTo (X, Y), где переменные X, Y типа Integer – рисуется линия из точки, где находится в данный момент курсор в точку (X, Y).

LineRel (dX,dY), где переменные dX, dY типа Integer – рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY).

Задание. Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.

У Вас не получается нарисовать линии? В чем же причина? Если внимательно посмотреть на эти процедуры и сравнить их с процедурой PutPixel, то можно заметить, что в них нет параметра, указывающего цвет рисования линии. В этом и других аналогичных случаях цвет задается специальной процедурой.



SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов.

Задания. 1. Исправьте свою программу так, чтобы процедуры рисовали линии различных цветов.

2. В начерченной ранее системе координат изобразите на чертеже точки:

А(150,450), В(100,350), С(350,350), D(300,450), E(200,350), F(200,50), L(250,40), K(200,20), M(300,250), X(175,400), Y(225,400), Z(275,400).

3. Соедините точки, получая отрезки:

AB, BC, CD, AD, EK, KL, LF, FM, ME.

Какая фигура у Вас получилась?

4. Напишите программу, рисующую эту фигуру, по вашему рисунку.

Внимание! Следите за порядком на дискете. Организуйте каталог A:\GRAPHIKA, где будут находиться файлы всех Ваших программ изучаемой темы.

Занятие II

Тема: Построение дуги, окружности, прямоугольника, эллипса.

Рассмотрим подробнее процедуры и функции, с которыми мы будем работать.



Circle (X, Y, R), где переменные X, Y, R типа Word – Рисуется окружность в центре (X, Y) c радиусом R.



Arc (X, Y, BegA, EndA, R), где переменные X, Y, BegA, EndA, R типа Word – Рисуется дуга (часть окружности) с координатами центра (X, Y), с радиусом R, которая начинается от угла BegA до угла EndA в полярной системе координат.

Например, чтобы начертить дугу (смотри рисунок) от окружности радиуса 50 пикселей и координатами центра (100, 230) надо набрать команду: Arc (100, 230, 45, 135, 50)



Нетрудно заметить, что если мы будем чертить дугу от 0 до 360, то начертим окружность.



Ellipse(X, Y, BegA, EndA , хR, yR), где переменные X, Y переменные типа integer, а BegA, EndA, хR, yR типа Word – рисуется дуга эллипса, у которого центр находится в точке (X, Y), BegA – начальный угол, EndA – конечный угол, хR – радиус по горизонтальной оси, yR – радиус по вертикальной оси.

Например, чтобы начертить дугу ABC от эллипса надо дать такую команду Ellipse(150, 200, 30, 240, 80, 50).



Вполне очевидно, чтобы начертить весь эллипс надо определить углы черчения дуги от 0 до 360 . А также, чтобы “вытянуть” эллипс вверх надо радиус по вертикальной оси сделать больше, чем по горизонтальной (если радиусы будут равны, то будет начерчена дуга окружности или сама окружность).



Rectangle (X1, Y1, X2, Y2), где переменные X, Y переменные типа integer – рисуется прямоугольник, X1, Y1 – координаты верхнего левого угла, X2, Y2 – координаты нижнего угла.



SetLineStyle (Type, Pattern, Thick), где переменные X, Y переменные типа Word – устанавливает стиль линий. Здесь Type – тип линии, Pattern – образец линии, Thick – толщина линии. Тип линии может быть задан с помощью одной из следующих констант:

0 – непрерывная линия

1 – линия из точек

2 – линия из точек и тире

3. – пунктирная линия

4 – линия,задаваемая пользователем

Параметр Pattern учитывается только для линий, вид которых определяет пользователь. Пользователь таким образом может задать линии в виде отрезков длиной до 16 пиксель.

Толщина линий.

1 – толщина в один пиксель

3 – толщина в три пикселя



Задание. Теперь, пользуясь этими процедурами, дорисуйте кораблик (например, иллюминаторы, якорь и др.), а также придумайте и нарисуйте предметы вокруг него, чтобы получилась картинка. Покажите результат работы в конце занятия учителю для оценки.

Установка стиля и цвета закраски. Закрашивание фигур.

После того как Вы нарисовали картинку, у Вас, верно, возникло желание ее раскрасить. Для этого есть различные способы. Познакомимся с одним из них – “заливкой” замкнутых площадей различными видами заполнения. Для этого существуют две процедуры SetFillStyle и FloodFill.



SetFillStyle (Pattern, Color), где переменные Pattern, Color типа Word – определяет стиль заполнения и цвет заполнения.

Значения Pattern можно взять из следующей таблицы:



Стандартные стили заполнения

Константа

Код

Маска-заполнение

EmptyFill

0

цветом фона

SolidFill

1

текущим цветом

LineFill

2

символами - -, цвет – Color

LtSlashFill

3

символами //норм. толщины, цвет – Color

SlashFill

4

символами //удвоенной толщины, цвет – Color

BkSlashFill

5

символами \\удвоенной толщины, цвет – Color

LtBkSlashFill

6

символами \\норм. толщины, цвет – Color

HatchFill

7

вертикально-горизонтальная штриховка тонкими линиями, цвет – Color

XhatchFill

8

штриховка крест-накрест по диагонали “редкими” тонкими линиями, цвет – Color

InterLeaveFill

9

штриховка крест-накрест по диагонали “частыми” тонкими линиями, цвет – Color

WideDotFill

10

“редкие” точки

CloseDotFill

11

“частые” точки

Например, если мы употребили процедуру

SetFillStyle (WideDotFill, Red) или SetFillStyle (10, 4),

то выбрали стиль закраски “редкими” точками красного цвета

Теперь же, когда Вы указали компьютеру ЧЕМ Вы будете закрашивать (стиль и цвет), можно указать, ЧТО Вы будете закрашивать. Для этого существует процедура



FloodFill(X, Y, ColorBorder), где X, Y переменные типа integer, а Border – переменная типа word -процедура, которая позволяет заполнить замкнутую область выбранным стилем и цветом закраски. Необходимо только выполнить несколько требований:

• первые два параметра (X, Y) являются координатами так называемой “затравочной” точки, т. е. точки, лежащей обязательно внутри закрашиваемой области;

• ColorBorder – параметр, обозначающий цвет, которым нарисована закрашиваемая фигура (так называемый цвет “бордюрчика”);

• фигура должна быть начерчена одним цветом;

• фигура должна быть замкнута.

Например, пусть следующая фигура начерчена синим цветом




(x,y)

Чтобы закрасить ее выбранным стилем и цветом (“редкие” точки красного цвета, см. выше) нужно дать команду FloodFill(180, 200, 1).

Нужно представить, как компьютер закрашивает фигуру. Первое, что он делает – это находит точку, от которой он начинает заливку и заливает точку за точкой до тех пор, пока не встретит заданный цвет. Таким образом, если фигура замкнутая, то, разливаясь во все стороны, он натыкается на “бордюрчик” и фигура становится закрашенной. Но, если в контуре фигуры есть хотя бы один пиксель, закрашенный другим цветом, замкнутость фигуры нарушается и краска выливается через эту дырочку и заливает не ту область, а иногда и весь экран.

Чтобы Вас уберечь от многих ошибок и, соответственно, сохранить Ваше время, хочу посоветовать относиться к рисованию фигур и их закраске, как к аппликации. Т. е. если нарисовали фигуру, постарайтесь сразу же ее закрасить, а также рисовать фигуры, начиная от самых больших и заканчивая самыми маленькими.



SetBkColor(Color), где переменная Color типа Word – процедура, устанавливающая цвет фона.

Примечание. После замены цвета фона на любой, отличный от черного, Вы не сможете более использовать цвет 0 как черный, он будет заменяться на цвет фона, т.к. процедуры модуля Graph интерпретируют цвет с номером 0 как цвет фона.

ClеarDeviсe – процедура, которая очищает экран и устанавливает курсор в позицию (0,0).

GraphDefaults – cбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые по умолчанию при запуске процедуры InitGraph).

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

Занятие III

Тема: Вывод текста.

Описываемые ниже стандартные процедуры подддерживают вывод текстовых сообщений в графическом режиме. Это не одно и то же, что использование процедур Write и Writeln. Дело в том6 что специально для графического режима разработаны процедуры, обеспечивающие вывод сообщений различными шрифтами в горизонтальном или вертикальном направлении, с изменением размеров и т.д.



OutText('текст'), где переменная 'текст' типа String – выводит текстовую строку, начиная с текущего положения указателя. При горизонтальном направлении вывода указатель смещается в конец выведенного текста, при вертикальном – не меняет своего положения. Строка выводится в соответствии с установленным стилем и выравниванием.

Примечание. Если текст выходит за границы экрана, то при использовании штриховых шрифтов он отсекается, а в случае стандартного шрифта не выводится.

OutTextXY(X, Y, 'текст'), где переменные X, Y типа Integer , а 'текст' типа String – выводит строку 'текст', начиная с точки с координатами X, Y. Указатель не меняет своего положения.

Например, после применения процедуры OutTextXY(100, 50, 'Grafika in Turbo Pascal') на экране будет высвечена строка Grafika in Turbo Pascal, начиная с точки с координатами (100,50).



SetTextStyle(Font; Direct; Size), где переменные Font и Direct типа word, а Size типа Integer – устанавливает стиль текстового вывода на графический экран. Здесь переменная Font указывает на код (номер) шрифта, Direct – код направления, а Size – код размера шрифта.

Для указания кода шрифта можно использовать следующие константы:



Номер

Описание

0

точечный шрифт 8х8

1

утроенный шрифт

2

уменьшенный шрифт

3

прямой шрифт

4

готический шрифт

5

“рукописный” шрифт

6

одноштриховый шрифт типа Courier

7

красивый наклонный шрифт типа Times Italic

8

шрифт типа Times Roman

9

шрифт типа Courier увеличенного размера

10

крупный двухштриховый шрифт

Cреди этих шрифтов только DefaultFont (код 0) является матричным шрифтом, т.е. его символы создаются из матриц 8х8 пикселей. Все остальные шрифты – векторные, их элементы формируются как совокупность векторов определенного направления и размера.

Примечание. Русскоязычные сообщения можно выводить в графическом режиме с помощью шрифта DefaultFont.

Для задания направления выдачи текста используют следующие константы:

0 – слева направо

1 – снизу вверх



Размер выводимых символов задается параметром Size, который имеет диапазон от 1 до 10 (матричный шрифт от 1 до 32).

SetTextJustify (Horiz,Vert), где переменные Horiz и Vert типа word – задает выравнивание текста по отношению к текущему положению указателя или к заданным координатам. Здесь Horiz – горизонтальное выравнивание, а Vert – вертикальное выравнивание.

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

Можно использовать следующие константы:

Для Horiz:

LeftText = 0 (указатель слева от текста);

CenterText = 1 (симметрично слева и справа);

RightText = 2 (указатель справа от текста);

Для Vert:

BottonText = 0 (указатель снизу от текста);

CenterText = 1 (симметрично снизу и сверху);

TopText = 2 (указатель сверху от текста);

Обратите внимание на неудачные имена констант. Если Вам надо расположить текст справа от заданных координат (процедура OutTextXY), то нужно задать константу LeftText, что в переводе с английского означает “Левый текст”.



SetUserCharSize (X1, X2, Y1, Y2), где переменные X1, X2, Y1, Y2 типа word – изменяет размер выводимых символов в соответствии с заданными пропорциями. Пропорции задают масштабный коэффициент, показывающий во сколько раз увеличится ширина и высота выводимых символов по отношению к стандартно заданным значениям. Коэффициент по горизонтали находится как отношение X1 к X2, по вертикали Y1, Y2. Например, чтобы удвоить ширину символов, необходимо задать Х1=2 и Х2=1. Стандартный размер символов устанавливается процедурой SetTextStyle, которая отменяет предшествующее ей обращение к SetUserCharSize.

GraphDefaults – cбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые по умолчанию при запуске процедуры InitGraph).

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

Решение задач.

Выберите с учителем задачи для решения из предложенного ниже списка:

1. Построить и подписать вершины

а) треугольника с вершинами (200,200), (250,200), (180,270);

б) прямоугольника с вершинами (80,80), (170, 80), (170, 50), (80,150);

2. Нарисовать человечка и подписать его части тела.

3. Составьте программу черчения на экране прямой, отрезка, луча и угла таким образом, чтобы каждый объект появлялся после нажатия клавиши . Предыдущий объект должен стираться. Подписывайте каждый раз выводимый объект.

4. Составьте программу черчения на экране треугольника, прямоугольника и круга таким образом, чтобы каждый объект появлялся после нажатия клавиши . Предыдущий объект должен стираться. Подписывайте каждый раз выводимый объект.

5. Написать на экране введенную строку пятью различными стилями.

6. Написать программу для вычерчивания на экране своего имени с помощью символа «*».

7. Построите на экране все виды углов и подпишите. (Углы бывают острыми, тупыми, прямыми и развернутыми.)

8. Начертить на экране все известные Вам графические объекты.

9. Построить снеговика, разукрасить его по своему вкусу. Дайте картинке название.

10. Нарисовать 3 карандаша разного цвета.



Занятие IV

Тема: Процедуры рисования закрашенных фигур.

Продолжим знакомиться с графическими процедурами.



Bar (x1,y1,x2,y2), где переменные X1, X2, Y1, Y2 типа Integer – рисуется закрашенный установленным ранее стилем и цветом прямоугольник.Координаты точек указываются аналогично процедуре рисования незакрашенного прямоугольника.

Bar3D (x1,y1,x2,y2, Depth, Top), где переменные X1, X2, Y1, Y2 типа Integer, Depth типа Word, а Top типа Boolean – рисуется параллелепипед, закрашенный текущим стилем и цветом. Здесь переменные X1, X2, Y1, Y2 являются координатами левого верхнего и правого нижнего углов передней грани, Depth – ширина боковой грани (отсчитываются по горизонтали), Top – признак включения верхней грани: TopОn = true – верхняя грань изображается, TopОff = false – верхняя грань не изображается.



PieSlice (X, Y, BegA, EndA, R), где переменные X, Y типа Integer, а BegA, EndA, R типа Word – строит сектор круга, закрашенный текущим стилем и цветом заполнения с учетом масштабов по осям. Здесь X, Y – координаты центра сектора круга, BegAначальный угол сектора, отсчитываемый против часовой стрелки от горизонтальной оси, направленной вправо, EndA – конечный угол сектора, отсчитываемый против часовой стрелки от горизонтальной оси, направленной вправо, R – радиус сектора.


FillEllipse (X, Y, Rx, Ry), где X, Y, Rx, Ry являются переменными типа Integer ­ обводит линией и заполняет эллипс. Здесь X, Y - координаты центра эллипса, Rx, Ry – горизонтальный и вертикальный радиусы эллипса. Эллипс обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с использованием параметров, установленных процедурой SetFillStyle.



Sector (X, Y, BegA, EndA, Rx, Ry), где переменные X, Y типа Integer, а BegA, EndA, Rx, Ry типа Word – вычерчивает и заполняет эллипсный сектор. Здесь X, Y - координаты центра эллипса, BegA, EndA - начальный и конечный углы эллипсного сектора, Rx, Ry - горизонтальный и вертикальный радиусы эллипса.



Задачи на изученную тему:

1. Составьте программу рисования часов типа “кукушка”.



2. Нарисуйте детскую картинку. Постройте из закрашенных пересекающихся окружностей рисунок облака.

3. Выполните построение следующей картинки.

4. Составьте программу рисования скворечника.

5. Нарисовать новогоднюю елку.

6. Постройте избушку на курьих ножках.

7. Составьте программу рисования павлина.

8. Составьте программу рисования фотоаппарата.

9. Постройте домик, разукрасьте его по своему вкусу.

10. Составьте программу рисования компьютера.

11. Составьте программу рисования веера.

12. Составьте программу рисования предмета, придуманного Вами с использованием рассмотренных процедур.


Для любопытных


Окно в графическом режиме. Решение задач.

SetViewPort (X1, Y1, X2, Y2, ClipOn), где переменные X1, Y1, X2, Y2 типа Integer, а ClipOn типа Boolean – устанавливает прямоугольное окно на графическом экране. Здесь X1, Y1 - координаты левого верхнего угла, X2, Y2 - координаты правого нижнего угла прямоугольника, а ClipOn - выражение, определяющее “отсечку” не умещающихся в окне элементов изображения. Если ClipOn имеет значение True, то элементы изображения отсекаются, в противном случае границы окна игнорируются. Для управления этим параметром можно использовать уже определенные в модуле константы:

Const


ClipOn = True; {Включить отсечку}

ClipOff = False; {Не включать отсечку}



ClearViewPort - очищает графическое окно, а если окно не определено к этому моменту, - весь экран. При очистке окно заполняется цветом с номером 0 и указатель перемещается в левый верхний угол окна.

Задачи


1. Составьте программу, которая бы рисовала несколько графических объектов, затем устанавливала прямоугольное окно (параметры процедуры задает пользователь) и очищала затем графическое окно.

2. Составьте программу, которая бы рисовала несколько графических объектов, затем устанавливала прямоугольное окно по Вашему желанию.

3. Составьте программу, которая бы рисовала несколько графических объектов, затем устанавливала прямоугольное окно и очищала весь экран кроме элементов, попавших в графическое окно.

4. Составьте программу, которая бы рисовала несколько графических объектов, затем устанавливала несколько прямоугольных окон с параметрами по Вашему желанию. Прокомментируйте использованные процедуры в программе.

5. Составьте программу, которая бы рисовала несколько графических объектов, затем очищала графическое окно и снова рисовала графические объекты.

6. Составьте программу, которая рисовала бы в графическом окне фигуру (окружность, квадрат, треугольник), подписывала ей название и после нажатия на клавишу выводила в окне другую фигуру с названием и т.д. (3-5 смен фигур).

7. Запросите у пользователя ответ на вопрос: надо ли делать отсечку? Напишите программу рисования концентрических окружностей и графического окна с учетом ответа пользователя.

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



Будьте готовы ответить на следующие вопросы:

1. Какие существуют команды для редактирования текста программы? Как ими пользоваться?

2. Что такое драйвер? Где они находятся?

3. Что значит инициализировать графический режим? Что для этого нужно сделать?

4. Что значит присвоить переменной типа драйвера значение Detect? Как в этом случае будет происходить инициализация графики?

5. Где находятся стандартные графические функции и процедуры? Что нужно сделать, чтобы ими воспользоваться?

6. Какие известные Вам текстовые процедуры можно использовать в графическом режиме, а какие – нельзя?

7. Назовите процедуры очистки экрана в текстовом и графическом режиме.

8. Существует ли в графическом режиме курсор? Если существует, есть ли у него название?

9. С помощью какой процедуры можно поменять цвет рисования линии?

10. С помощью какой процедуры можно поменять стиль закраски? Что обозначают параметры этой процедуры?

11. Как Вы думаете, зачем нужны три процедуры рисования линии? Какой процедурой чаще всего пользовались Вы? Попробуйте предположить, в каком случае Вам понадобятся другие?

12. Какие основные ошибки Вы допускали при инициализации графики?

13. Каким параметром в записи процедур всегда стоит радиус?

14. Какие параметры и в каком порядке нужно задать, чтобы нарисовать дугу?

15. Какие параметры и в каком порядке нужно задать, чтобы нарисовать окружность?

16. Какие параметры и в каком порядке нужно задать, чтобы нарисовать эллипс?

17. Какие параметры и в каком порядке нужно задать, чтобы нарисовать прямоугольник?

18. Какие параметры и в каком порядке нужно задать, чтобы нарисовать параллепипед?

19. Какие параметры и в каком порядке нужно задать, чтобы нарисовать сектор круга?

20. Какие параметры и в каком порядке нужно задать, чтобы нарисовать сектор эллипса?

21. Можно ли начертить пунктирную линию? Какие стандартные линии предоставляет Вам среда программирования? Как называется эта процедура? Как к ней обратиться?

22. Можно ли нарисовать толстую линию? Если можно, то объясните как?

23. Какими процедурами и в каком порядке нужно воспользоваться, чтобы закрасить фигуру?



24. Каким требованиям должна соответствовать фигура, чтобы она закрасилась без ошибок?

25. Какие есть графические процедуры вывода текста на экран? Как можно изменить шрифт букв? Какие еще есть процедуры, управляющие выводом текста? Для чего они нужны?




Читатель, представь себе, что ты идиот; а теперь представь себе, что ты конгрессмен; впрочем, я повторяюсь. Марк Твен
ещё >>