Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal.doc
Скачиваний:
16
Добавлен:
06.09.2019
Размер:
3.69 Mб
Скачать

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

Для формирования графических изображений в Турбо Паскале предназначен стандартный модуль GRAPH. В нем содержится 79 графических процедур, функций, десятки стандартных констант и типов данных. В состав модуля GRAPH входит ряд программ-драйверов для наиболее распространенных видеоадаптеров: CGA, MCGA, EGA, VGA, HERCULES, AT&T, 3270 PC. Эти драйверы хранятся в файлах с расширением BGI.

Скелет графической программы:

program имя;

USES GRAPH; {подключение модуля}

var DR,RG:integer;

begin

DR:=detect;

initgraph(dr,rg,'<путь к драйверу адаптера>'); {вызов процедуры GRAPH}

<ГРАФИЧЕСКИЕ ОПЕРАТОРЫ>

readln;

closegraph;

end.

INITGRAPH(драйвер, режим, 'путь') - подключает графический режим.

Драйвер - это переменная целого типа, определяющая тип графического дисплея.

Режим - это переменная типа integer, определяющая режим работы графического адаптера(GM).

Путь - указывает путь программам с TPU.

DETECT - режим автоматического определения типа.

CLOSEGRAPH - прекращает работу графического адаптера и восстанавливает текстовый режим работы экрана

Разрешение графического экрана:

Цвета экрана

0 - черный 8 - темно-серый

1 - синий 9 - светло-синий

2 - зеленый 10 - светло-зеленый

3 - голубой 11 - светло-голубой

4 - красный 12 - светло-красный

5 - лиловый 13 - светло-лиловый

6 - коричневый 14 - желтый

7 - светло-серый 15 - белый

ГРАФИЧЕСКИЕ ОПЕРАТОРЫ:

1. SETCOLOR(цвет) - устанавливает текущий цвет для выводимых линий и символов;

2. SETBKCOLOR(цвет) - устанавливает цвет фона;

3. MOVETO(x,y) - переводит курсор в позицию x,y, точка при этом не высвечивается;

4. LINETO(x,y) - рисует линию от текущей позиции курсора до x,y;

5. LINEREL(Dx,Dy) - рисует линию от текущей позиции на относительное расстояние Dx,Dy;

6. PUTPIXEL(x,y,цвет) - выводит точку заданного цвета;

7. LINE(x1,y1,x2,y2) - выводит линию;

8. CIRCLE(x,y,r) - выводит окружность с центром (х, у) и радиусом r;

9. ARC(x, y, начальный_угол, конечный_угол, r) - выводит дугу (углы измеряются в градусах против часовой стрелки);

10. ELLIPSE(x, y, нач_угол, кон_угол, Rx, Ry) – эллипс, Rx, Ry – радиусы большой и малой дуги.

11. RECTANGLE(x1,y1,x2,y2) - прямоугольник, где x1,y1 - координаты левого верхнего угла, x2,y2 - правого нижнего угла;

12. BAR(x1,y1,x2,y2) - закрашенный прямоугольник;

13. BAR3D(x1,y1,x2,y2,глубина,false или true) - параллелепипед; где x1,y1 - координаты левого верхнего угла; x2,y2 - координаты правого нижнего угла, true - верхняя грань есть, false - верхняя грань отсутствует.

14. FILLELLIPSE(x,y,Rx,Ry) - закрашенный эллипс;

15. SECTOR(x,y,нач.угол,кон.угол,Rx,Ry) - сектор закрашенный;

16. SETFILLESTYLE(штриховка, цвет) - каким цветом или какими штрихами будет закрашена замкнутая область;

Штриховка:

0 - фоном 7 - ++++

1 -сплошная 8 - x x x

2 - _ _ _ 9- квадратами

3 - //// 10 - редкими точками

4 - толстыми/// 11 - частыми точками

5 - \\\\ 12 - пользовательские

6 - толстыми \\\

17. FLOODFILL(x, y, цвет, цвет_границы) - штрихует произвольную замкнутую область; (х, у) – координаты точки внутри области.

Примеры графических программ:

Программа №1.

program g1;

uses graph;

var dr,rg:integer;

begin

dr:=detect;

initgraph(gr,gm,'c:\bp\bgi');

setcolor(3);

setbkcolor(14);

setfillstyle(8,4);

fillellipse(100,100,30,50);

setfillstyle(2,2);

circle(200,200,50);

floodfill(200,200,3);

readln;

closegraph;

end.

Программа №2.

program g2;

uses graph,crt;

var d,r,e:integer;

{экран расчерчивается случайными линиями}

begin

d:=detect;

initgraph(d,r,'..\bgi');

e:=graphresult;

if e<>grok then

writeln(grapherrormsg(e))

else

begin

setgraphmode(0);

repeat

setcolor(succ(random(4)));

line(random(getmaxx),random(getmaxy),

random(getmaxx),random(getmaxy))

until keypressed;

closegraph;

end;

end.

Наберите эти программы и посмотрите, как они работают.

ВЫВОД ТЕКСТА В ГРАФИЧЕСКОМ РЕЖИМЕ

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

1. OUTTEXT(ТЕКСТ) - вывод текста, начиная с текущей позиции

2. OUTTEXTXY(x,y,текст) - вывод текста, начиная с x,y

3. SETTEXTSTYLE(шрифт,направление,размер) - процедура устанавливает стиль текстового вывода на графический экран, где

шрифт: 0 - стандартный шрифт, 1 - штриховой шрифт, 2 - уменьшенный, 3 - прямой, 4 - готический;

направление: 0 - слева - направо, 1 - снизу - вверх;

размер: 1_32 для стандартного шрифта, 1_10 для штриховых

4. SETUSERCHARSIZE(x1,x2,y1,y2) - позволяет изменить ширину и высоту символа для штрихового шрифта

- отношение, определяющее ширину символов

- отношение, определяющее высоту символов

Задание.

  1. Нарисовать кораблик.

  2. Нарисовать диаграмму (записать программу на свой диск, graf1.pas).

  1. Нарисовать (graf2.pas):

А) Б)

  1. Нарисовать (graf3.pas):