СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Графика в паскал

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Графика в паскал»

Графика в Pascal

Графика

Для формирования графических изображений в языке Turbo Pascal предназначен стандартный библиотечный модуль GRAPH. Этот модуль содержит десятки стандартных программ и типов данных, а также около 80 графических процедур и функций. Подключение этого модуля к пользовательской программе осуществляется директивой Uses graph.

С момента подключения модуля GRAPH становятся доступны все графические средства.

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

InitGraph (var Gd : integer; var Gm : integer; Path : string)

Этой процедурой устанавливается драйвер, режим и путь к каталогу, где находится драйвер. Обычно драйверы подключаются в режиме автоопределения используемого монитора ПК. Для этого перед инициализацией графики задается Gd:= Detect (или Gd:= 0). В этом случае по умолчанию устанавливается режим с наибольшим числом точек на экране, а значение параметра "Gm" игнорируется.

Номер наибольшего режима для текущего драйвера возвращает функция GetMaxMode. Изменить режим можно процедурой SetGraphMode(Gm). Экран при этом очищается.

Третий параметр – путь к драйверу; если он расположен в текущем каталоге, то вместо маршрута ставятся пустая строка (два апострофа).

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

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

GetMaxX - по оси Х; GetMaxY - по оси Y.

Для возврата из графического режима в текстовый можно использовать операторы:

CloseGraph - полное прекращение работы графической системы;

RestoreCrtMode - переключение в текстовый режим с возможностью возврата к текущим установкам графического режима (оператором SetGraphMode).

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

 

Процедуры рисования

SetBkColor( N) - установить цвет N для пикселов фона.

SetColor( N) - установить цвет N для выводимых линий.

PutPixel(X, Y, N) - высветить цветом N пиксель с координатами X,Y.

GetPixel(X, Y) - определить цвет пиксела с координатами X, Y.

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

Наименование цвета

Цвет

Код цвета

Black

черный

0

Blue

синий

1

Green

зеленый

2

Gyan

бирюзовый

3

Red

красный

4

Magenta

малиновый

5

Brown

коричневый

6

LightGray

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

7

DarkGray

темно-серый

8

LightBlue

голубой

9

LightGreen

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

10

LightGyan

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

11

LightRed

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

12

LightMagenta

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

13

Yellow

желтый

14

White

белый

15

 

Circle(X, Y, R) - окружность с центром X, Y радиуса R.

Arc(X,Y, A1,A2, R) - дуга окружности.

Ellipse(X,Y, A1,A2, RX,RY) - сектор эллипса с полуосями RX,RY.

A1, A2 - начальный и конечный углы (в градусах), отсчитываемые против часовой стрелки относительно оси Х.

Line(X1,Y1, X2,Y2) - отрезок прямой от точки с координатами X1,Y1 к точке с координатами X2,Y2.

LineTo(X, Y) - отрезок прямой от текущего положения курсора до точки X,Y.

LineRel(dX, dY) - отрезок прямой от текущего положения курсора до точки, смещенной на расстояние dX,dY.

В отличие от процедуры Line процедуры LineTo и LineRel при своем исполнении перемещают текущий указатель. Перемещать курсор без рисования можно процедурами MoveTo(X, Y) иMoveRel(dX,dY).

В графическом режиме курсор невидим, а его положение можно определить функциями, возвращающими значения координат: GetX - по оси Х, GetY - по оси Y.

Rectangle(X1,Y1, X2,Y2) - прямоугольник с левым верхним углом в точке X1,Y1 и правым нижним углом в точке X2,Y2 (стороны параллельны краям экрана ).

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

Program graph1;

uses graph;

var  gd,gm,error: integer;

begin

gd:=detect;

initgraph(gd,gm,'');

error:=graphresult;

if error grOk then begin

write ('Ошибка графики: ',

grapherrormsg(error));

readln; halt;

end;

line (0,0,getmaxx,getmaxy);

readln;

closegraph;

end.

 

Процедуры построения заполненных фигур

Граница заполняемых фигур рисуется текущим цветом для линий. Цвет N и стиль заполнения P (орнамент) можно устанавливать из стандартного набора BGI или определять самим процедурой SetFillStyle(P, N).

Типы и толщина линий:

0 -  сплошная

1 - точечная

2 - штрихпунктирная

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

Шаблоны штриховки:

Наименование шаблона

Вариант заполнения

Код цвета

EmptyFill

заполнение цветом фона

0

SolidFill

сплошная штриховка

1

LineFill

горизонтальная штриховка

2

LtSlashFill

/// - штриховка

3

SlashFill

/// - штриховка толстыми линиями

4

BkSlashFill

\\\ - штриховка толстыми линиями

5

LtBkSlashFill

\\\- штриховка

6

HatchFill

заполнение прямой клеткой

7

XHatchFill

заполнение косой клеткой

8

InterleaveFill

заполнение частой сеткой

9

WideDotFill

заполнение редкими точками

10

CloseDotFill

заполнение частыми точками

11

UserFill

тип задается пользователем

12

Bar(X1,Y1, X2,Y2) - прямоугольник;

Bar3d(X1,Y1, X2,Y2, d, t) - параллелепипед с заполненной передней гранью (координаты углов грани X1,Y1, X2,Y2) глубиной d.

Переменная типа boolean задает вывод верхней грани. При t=TopOn (true) верхняя грань показывается, при t=TopOff (false) - нет.

FillEllipse(X,Y, RX,RY) - заполненный эллипс;

Sector(X,Y, A1,A2, RX,RY) - заполненный сектор эллипса;

PieSlice(X,Y, A1,A2, R) - заполненный сектор круга.

FillPoly(N, M) - заполнить произвольную плоскую фигуру с границей, описанной массивом N точек границы. М - параметр типа PointType ( Var M: array[1..N] of PointType).

Пример2. Изображение графических фигур

Program primer2;

uses graph;

var

grad,grreg:integer;

begin

grad:=detect;

initgraph(grad,grreg,’’);

SetFillstyle(solidfill,lightgray);

floodfill(100,100, lightgray);

SetFillstyle(solidfill,green);

bar(100,150,200,250);

setcolor(lightred); circle(300,200,50);

floodfill(300,200,lightred);

setcolor(blue);

line(400,250,460,150);

line(460,150,520,250);

line(520,250,400,250);

SetFillstyle(solidfill,blue);

floodfill(460,200,blue);

readln;

closegraph;

end.