Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
07.02.2016
Размер:
282.62 Кб
Скачать

X,y:real;

begin

gd:=detect;

initgraph(gd,gm,'c:\tp\bgi');

if graphresult<>grok then halt(1);

{побудова осів x та y}

line(320,480,320,0);

line(0,240,640,240);

{побудова ліній масштабу}

for i:=1 to 640 do line(i+(i*19),239,i+(i*19),241);

for i:=1 to 480 do line(321,i+(i*19),319,i+(i*19));

{Побудова графіку функції для значень x[-5,5]}

for i:=-50 to 50 do

begin

x:=0.1*i;

y:=0.5*x*x-2;

putpixel(round(320+20*x),round(240-20*y),14);

end;

readln;

closegraph;

end.

Звичний для нас оператор WRITE в графічному режимі не працює. Тому існують спеціальні процедури:

Таблиця 7.10. Процедури роботи з текстом.

OutText(s:snhing)

Виведення послідовності символів

OutTextXY(x,y: integer; s: string)

Виведення послідовності символів, починаючи з вказаних координат

Наприклад OutText(‘графік’);

OutText(120,200,‘графік’);

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

Таблиця 7.11.

ImageSize(x1,y1,x2,y2: integer): word

Функція отримання розміру зображення

GeyImaage(x1,y1,x2,y2: integer: var p)

Збереження зображення в буфері пам’яті

PutImage(x,y: integer; var p; bb:word)

Виведення зображення з буферу пам’яті на екран

Значення константи bb для процедури PutImage означає, яким чином передається зображення на екран. Так, якщо bb = 1, то при накладанні зображення не буде видно і це використовують для знищення зображення в даній області екрану.

Таблиця 7.12. Значення константи bb для процедури PutImage.

0

mov

1

xor

2

or

3

and

4

not

Приклад 7.4. Переміщення зображення:

uses graph, crt;

var

a,t, gd, gm, i,x,y : Integer;

Size : Word;

y0, y1, y2, x1, x2 : Integer;

P : Pointer;

begin

gd:=detect;

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

if graphresult<>grok then halt(1);

for i:=1 to 10 do

circle(100,100,i*10);

readln;

size:=imagesize(0,0,250,250);

getmem(p,size);

getimage(0,0,250,250,p^);

setcolor(yellow);

putimage(300,300,p^,4);

readln;

size:=imagesize(50,100,150,450);

getmem(p,size);

getimage(50,100,200,450,p^);

for x:=50 to 260 do begin putimage(x,100,p^,1); delay(10); if x<>260 then putimage(x,100,p^,1);end;

readln;

closegraph;

end.

Якщо треба змінювати зображення всього екрану, використовують відеосторінки.

Таблиця 7.13.Процедури управління екраном, вікном, сторінкою.

ClearDevice

Очистка графічного екрану

ClearViewPort

Очистка графічного вікна

SetActivePage(p: word)

Завдання активної сторінки

SetAspectRatio(x,y:wordd)

Зміна відносного масштабу зображення по горизонталі та по вертикалі

SetviewPort(x1,y1,x2,y2:integer, clip:boolean)

Завдання розмірів вікна

SetVisualPage(p:word)

Завдання відеосторінки

Приклад 7.5. Керування відеосторінками.

uses graph,crt;

var

a,t, gd, gm, i,x,y : Integer;

size:word;

P : Pointer;

begin

gd:=detect;

initgraph(gd,gm,'c:\tp\bgi');

if graphresult<>grok then halt(1);

setactivepage(0);

setfillstyle(1,cyan);

setcolor(cyan);

Circle(200,200,50);

floodfill(210,210,cyan);

setactivepage(1);

setfillstyle(1,red);

setcolor(red);

Circle(200,200,50);

floodfill(210,210,red);

setactivepage(2);

setvisualpage(2);

readln;

setvisualpage(0);

readln;

setvisualpage(1);

readln;

closegraph;

end.

Приведемо графічну частину програми для прикладу „Рівновага”:

Uses Crt,Graph,giry;

{Описуємо константи для зображення гирів}

const

Triangle: array[1..8] of PointType = ((X:10; Y: 22),(X: 15; Y: 24),

(X: 5; Y: 26),(X: 5; Y: 37), (X: 30; Y: 37),(X: 30; Y: 26),

(X: 20; Y: 24),(X:25; Y: 22));

Triangle1: array[1..8] of PointType = ((X: 10; Y: 22),(X: 15; Y: 24),

(X: 5; Y: 26),(X: 10; Y: 37), (X: 25; Y: 37),(X: 30; Y: 26),

(X: 20; Y: 24),(X:25; Y: 22));

Triangle2: array[1..10] of PointType = ((X: 10; Y: 17),(X: 15; Y: 19),

(X: 15; Y: 20),(X: 3; Y: 22),(X: 6; Y: 37), (X: 29; Y: 37),

(X: 32; Y: 22),(X: 20; Y: 20),

(X: 20; Y: 19),(X:25; Y: 17));

Triangle3: array[1..14] of PointType = ((X: 15; Y: 12),(X: 10; Y: 14),

(X: 10; Y: 16),(X: 15; Y: 18),(X: 15; Y: 20),(X: 3; Y: 22),

(X: 8; Y: 37), (X: 40; Y: 37),(X: 45; Y: 22),(X: 33; Y: 20),

(X: 33; Y: 18),(X:38; Y: 16),(X: 38; Y: 14),(X: 33; Y: 12));

Triangle4: array[1..33] of PointType = ((X: 15; Y: 10),(X: 10; Y: 12),

(X: 10; Y: 14),(X: 15; Y: 16),(X: 15; Y: 18),(X: 13; Y: 19),

(X: 10; Y: 20),(X: 8; Y: 21),(X: 6; Y: 22),(X: 4; Y: 23),

(X: 3; Y: 24),(X: 2; Y: 26),(X: 2; Y: 33),(X: 8; Y: 35),(X: 9; Y: 36),

(X: 9; Y: 37),(X: 43; Y: 37),(X: 43; Y: 36),(X: 44; Y: 36),

(X: 45; Y: 35),(X: 51; Y: 33),(X: 51; Y: 26),(X: 50; Y: 24),

(X: 49; Y: 23),(X: 47; Y: 22),(X:45; Y: 21),(X: 43; Y: 20),

(X: 40; Y: 19),(X: 37; Y: 18),(X: 37; Y: 16),(X: 42; Y: 14),

(X: 42; Y: 12),(X: 37; Y: 10));

type mas=array [1..100] of longint;

Соседние файлы в папке конспект лекцій 1 паск