У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа Модуль Grph В среде TurboPscl обычно работа с графикой осуществляется с помощью стандартно

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

Лабораторная работа «Модуль Graph»

В среде TurboPascal обычно работа с графикой осуществляется с помощью стандартного модуля Graph.

Присоединение модуля к программе осуществляется стандартным образом: Uses Graph;

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

GraphDriver – переменная, в которую необходимо записать код требуемого графического     

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

                       Она может принимать следующие значения

Имя

Значение

Назначение

Detect

0

Автоматический выбор драйвера

CGA

1

MCGA

2

EGA

3

EGAMono

4

IBM8514

5

HercMoho

6

ATT400

7

VGA

8

PC3270

9

CurrentDriver

-128

Текущий драйвер

GraphMode – переменная, в которую помещается код графического режима.(значение    

                       можно не указывать)  

DriverPath – строка, содержащая путь к драйверу (если строка пустая, считается, что драйвер находится в  ткущем каталоге)

Еще раз:

Procedure InitGraph(var GraphDriver: integer; var GrapMode: integer; DriverPath: string);

Результат выполнения процедуры InitGraph помещается в переменную GraphResult. Она  может принимать следующие значения:                

Имя

Значение

Назначение

GrOk

0

инициализация прошла нормально: можно работать.

GrNoInitGraph

-1

Не установлен графический режим

grNotDetected

-2

нет графического адаптера

grFileNotFound

-3

нет драйвера устройства:

grInvalidDriver

-4

ошибка в драйвере

grNotLoadMem

-5

нет памяти для загрузки драйвера

grNoScanMem

-6

Нет памяти для сканирования

grNoFloodMem

-7

нет памяти для закраски

grFontNotFound

-8

Не найден файл со шрифтом

GrNoFontMem

-9

нет памяти для загрузки

GrInvalidMode

-10

недопустимый режим для выбранного драйвера

GrError

-11

Ошибка графической системы

grIOerror

-12

Ошибка ввода-вывода графической системы

GrInvalidFont

-13

Ошибка в файле со шрифтом

grInvalidFontNum

-14

Неверный номер шрифта

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

Для задания цвета изображения используется процедура SetColor, а для задания цвета фона – SetBkColor. Обе процедуры имеют по одному параметру – коду цвета, с возможными значениями:

Имя

Значение

Назначение

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

Белый

Для закраски точки используется процедура PutPixel(X,Y:Integer;Pixel:Word), где Х и Y координаты точки, а Pixel – цвет, в который закрашивается точка.

Для построения отрезка используются процедуры Line, LineRel и LineTo.

Процедура Line имеет параметрами координаты концов отрезка X0, Y0, X1, Y1.

Процедура LineRel проводит отрезок от текущей позиции в точку, сдвинутую относительно текущей позиции на величины Dx и Dy, которые являются параметрами процедуры

Процедура LineTo проводит отрезок от текущей позиции в точку с координатами Х, Y, которые являются параметрами процедуры.

Для перемещения указателя без высвечивания точки используются процедуры MoveRel и MoveTo.

Первая перемещает указатель координат на заданное расстояние (Dx, Dy).

Вторая - в заданную точку (Х, Y)

  Текущие параметры линии () задаются с помощью процедуры SetLineStyle( LineStyle: Word; Pattern: Word; Thickness: Word);

  LineStyle задает стиль линии

SolidLn

0

Сплошная

DottedLn

1

Пунктирная

CenterLn

2

Штрихпунктирная

DashedLn

3

Штриховая

UserBitLn

4

Заданная пользователем

В последнем случае (и только) задается параметр Pattern.

Thickness задает толщину линии 1 – нормальная, 3 – толстая.

Для построения фигур из линий используются процедуры

Bar (X1,Y1,X2,Y2: integer) построение закрашенного прямоугольника

Bar3D (X1,Y1,X2,Y2: integer; Dept:Word; Top:boolean) построение закрашенного параллелепипеда

DrawPoly (NumPoints: Word; Var PolyPoints); построение  многоугольника

FillPoly(NumPoints: Word; Var PolyPoints) построение закрашенного многоугольника

FloodFill(X,Y: integer; Border:Word)

Rectangle (X1,Y1,X2,Y2: integer) построение  контура прямоугольника

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

Dept – ширина боковой грани по горизонтали.

Top – признак вычерчивания верхней грани.

NumPoints:- количество точек многоугольника

PolyPoints – массив содержащий пары координат вершин многоугольника. Их число NumPoints+1. Первая  и последняя пары должны совпадать.

X,Y– координаты любой точки внутри области

Borde – цвет линии, до которой производится закраска.

Для построения криволинейных фигур используются процедуры

Arc(X,Y: integer; StAngle,EndAngle,Radius:Word) построение дуги окружности

Circle (X,Y: integer; Radius:Word) построение окружности

Ellipse (X,Y: integer; StAngle,EndAngl,:Word; Xradius,Yradius:Word) построение дуги эллипса

FillEllips (X,Y: integer; Xradius,Yradius:Word) построение закрашенного  эллипса

PieSlice (X,Y: integer; StAngle,EndAngle,Radius:Word) построение закрашенного  сектора круга.

Sector (X,Y: integer; StAngle,EndAngl,:Word; Xradius,Yradius:Word) построение закрашенного  сектора эллипса

X,Y – координаты центра

StAngle,EndAngle – угол до начальной (конечной) дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной  слева направо

Xradius,Yradius –горизонтальные и вертикальные полуоси эллипса.

Для работы с текстом используются следующие процедуры

OutText (TextString:string) вывод последовательности символов

OutTextXY (X,Y: integer; TextString:string) вывод последовательности символов, начиная с заданных координат.

SetTextJustify (Horiz,Vert:Word) устанавливает способ выравнивания текста

Horiz 0 – левое выравнивание

         1 – Выравнивание по центру

         2 – правое выравнивание

Vert 0 - Нижнее выравнивание

       2 –Верхнее выравнивание

SetTextStyle (Font:Word: Direction:Word; CharSize:word) устанавливает текущие тип шрифта, направление текста и размер символов

Font 0 –Default Font

        1 - TriplexFont

        2 - SmallFont

        3 - SansSerifFont

        4 - GoticFont

Direction 0 – горизонтальное расположение строк

               1 –вертикальное расположение строк

CharSize 0 – размер шрифта задается пользователем

SetUserCharSize(MultX, DivX, MultY, DivY:Word) задает коэффициенты увеличения штриховых шрифтов.

MultX./ DivX – коэффициент увеличения ширины символов

MultY/ DivY– коэффициент увеличения высоты символов

С помощью процедуры ClearDevice осуществляется очистка графического экрана

С помощью процедур SetActivePage (Page:Word) и SetVisualPage (Page:Word) можно использовать несколько экранных страниц: сначала готовить изображение (SetActivePage), а потом отображать страницу (SetVisualPage)

Page – номер экранной страницы.

Функции GetMaxX, GetMaxY возвращают максимальную координату для текущего драйвера в текущем режиме.

А Функции GetX, GetY возвращают соответствующую текущую координату.

В качестве примера использования ресурсов модуля Graph рассмотрим программу, которая изображает график функции exp(-Ax)*sin(x) при изменении коэффициента А.

Program Exampl;

Uses Graph;

Const ExpBeg = 0.1;

         DeltaExp = 0.1;

Var X0, Y0: Word;

      X,Y: real;

      i, j :word;

GraphDriver, GraphMode: integer;

Switch: Boolean;

Begin

 GraphDriver:=Detect;

InitGraph(GraphDriver,  GrapMode, ’’);

If GraphResult<>grOk then

 Writeln(‘Ошибка при включении графического режима’)

Else

  Begin

    X0:=20;

    Y0:=GetMaxY div 2;

    Swith := True;

    For  j:= 0 to 10 do

      Begin

         SetActivePage(Org(Switch));

         SetBkColorBlue);

         SetColor(White);

         ClearDevice;

          Line (X0, 20, X0, GetMaxY – 20);

          Line (X0, Y0, GetMaxX – 20,Y0);

          MoveTo(X0,Y0);

           For i:=1 to GetMaxX – 40 do

              Begin

                  X:=i * 4 * Pi / (GetMaxX – 40);

                  Y := Exp (-X * (ExpBeg + DeltaExp * j)) * Sin(X);

                   LineTo(X0+i, Y0 – round (Y * 150));

               End;

            SetVisualPage(ord(Switch));

            Swith := not Switch;

         End;

CloseGraph;

End;

Readln;

End/

Задание. Разобрать приведенный пример.

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

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

Отчетность. Зачет по работе будет проводиться на одном из последующих занятий с помощью билетов, содержащих задание на программирование с использованием модуля GRAPH.




1. 102013г Присутствовало- 10 Повестка дня- О работе с обучающимися по профилактически и предупреждению
2. I. Происхождение сознания
3. г продукції Зберігання та переробка сільськогосподарської продукції
4. черную бухгалтерию у других слишком сложными стали расчеты по семейному бюджету
5. тема Российской Федерации 2.
6. изм 3 мм 4 мм 5 мм 6 мм 8 мм 10 мм 12
7. Утверждаю.1
8. Тема- Себестоимость железнодорожных перевозок Вариант 664сборный Р гр
9. Наполеон и Южная Америка хроника возможного побега
10. сут1