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

14 Лекция

14.1 Тілдің графикалық мүмкіндіктерін пайдалану

Компьютердің мониторы мәтіндік (горизонталь бойынша 80 және вертикаль юойынша 25 символға дейін бейнеленеді) және графикалық (графикалық нүктелер – пиксельдер бейнеленеді) режимдерді сүйемелдейді. Графикамен жұмыс жасау монитор графикалық режимге өткеннен кейін орындалады. Пиксельдің өлшемі бейненің көрініс қасиетін анықтайды. Графикалық режимде жұмыс жасағанда видеоадаптер бірнеше графикалық режимдерді сүйемелдей алады. Қазіргі кезде шешу қабілеті 640×480, 1024×268, 1152×864, 1280×1024 болатын мониторлар қолданылады. Шешу қабілетті rx×ry түрде белгілейміз, мұндағы rx – экрандағы горизонталь бойынша пиксельдер саны, ry – вертикаль бойынша (rx пен ry тек бүтінсанды мәндерді ғана қабылдайды). Нүктенің экран бетіндегі орнын графикалық координаттар береді. Олардың рұқсат етілген мәндер аралығы Х rx-1ге дейін және Y өсі бойынша 0 ден ry-1 -ге дейін. Есептеу басталатын нүкте экранның сол жақтағы жоғарғы бұрышы болып табылады, есептеу – сол жақтан оң жаққа және жоғарыдан төмен қарай жүргізіледі.

Паскаль графикалық программаларды жетілдіруге арналған арнайы құралдарды қамтиды. Ол мүмкіндіктердің бір бөлігі стандартты Graph модулі арқылы жүзеге асырылған. Ол модуль дербес компьютерлердің ең кең тараған графикалық адаптерлерімен жұмыс жасауға арналған әмбебап тағайындалған графикалық ішкі программалардың библиотекасы болып табылады. Graph.tpu модулін программаға қосу программаның басында uses graph директивасы арқылы орындалады. Графикалық режимге ауысу Initgraph процедура арқылы жүзеге асырылады. Бұл процедураның үш аргументі бар: Initgraph(драйвер, режим, 'драйверге жету жолы'), мұндағы драйвер –видеоадаптердің типі (мысалы egavga.bgi), режим – видеорежим, 'драйверге жету жолы' – драйвердің дискте орналасқан орны, жол көрсетілмесе (бос болса - ''), онда драйвер программа орналасқан каталогта орналасуы тиіс. Видеоадаптердің типі gd:=Detect өрнек арқылы автоматты түрде анықталуы мүмкін. Graph модуліндегі detect=0 бүтін тұрақты драйверді автоматты түрде танып, берілген компьютер үшін шешу қабілетінің максималды режимін орнатады. Графикалық режимдегі жұмысты аяқтауды closegraph процедурасы қамтамасыз етеді, ол драйверді жадыдан түсіріп, графиканы инициализациялауға дейінгі экранның жұмыс режимін орнатады. Программ фрагменті:

uses graph;

var gd, gm: integer;{gd және gm драйверді және режимді анықтайды}

begin

gd:=vga; gm:=vgahi; {немесе оның орнына gd:=detect }

initgraph(gd,gm,'d:\tp55');

...

closegraph {жадыны драйверден босату}

Графикадағы қателерді байқау үшін graphresult және grapherrormsg (қатенің коды) функциялар пайдаланылады. Grapherrormsg кодқа сәйкес қатенің сипаты жөненінде хабарламаны береді. Қателерді тексерумен бірге графикалық режимді инициализациялау программада келесі түрдей орындалуы мүмкін:

uses graph; var gd, gm, errorcod: integer;

begin

gd:=detect; initgraph(gd,gm,'');

errorcod:=graphresult;

if errorcod <> grOk then

begin

writeln('графика қатесі');

writeln(grapherrormsg(errorcod));

halt

end;

Halt процедурасы программаның орындалуын тоқтатып басқаруды операциялық жүйеге қайтарады. Палитраны қалыптастыру үшін қызыл, жасыл және көк түстерді арластыру және сәуленің жарықтылығын өзгерту жүйесі пайдаланылады. Түс палитраның түстер тізіміндегі 0 .. 15 аралықтағы нөмір арқылы беріледі:

0 - қара

1 – көк

2 -жасыл

3 - cyan (көк)

4 - қызыл

5 - magenta(пурпурный)

6 - қоңыр

7 - ашық сұр

8 - қара сұр

9 - ашық көк

10 - ашық жасыл

11- ашық cyan

12 - ашық қызыл

13 - ашық magenta

14 - сары

15 - ақ

setcolor(түс) және setbkcolor(түс) процедуралары суреттің және фонның ағымдағы түсін орнатады. Үнсіз бойынша қара фон және суреттің ақ түсі орнатылады. Төменде қарапайым геометриялық примитивтерді құру үшін қолданылатын Graph модульдің негізгі процедуралары келтірілген:

putpixel(x,y,c) координаталары (х,у) түсі с нүктені құру

selinestyle(a,b,t) сызықтардың стилін, үлгісін және қалындығын орнату, а – сызықтың стилі; b - «үлгі» - егер а=4 болса онда мәні 4, басқа жағдайларда b=0; t - толщина сызықтың қалындығы – мәні 1 болса (қалыпты қалындық) немесе 3 (қалын сызық).

line(xl ,yl ,х2,у2) екі нүктені кесіндімен қосу

rectangle(xl,y1,x2,y2) диагоналінің шеттері берілген және қабырғалары координат өстеріне параллель болатын тік бұрышты құру

circle(x,y,r) орталығы (х,у) және радиусы r болатын шеңберді құру

arc(x,y,a,b,r) шеңбердің доғасын құру: а,b - бастапқы және соңғы бұрыш (градус)

ellipse(x,y,a,b,rx,ry) эллипстік доғаны құру: rx, rу – эллипстің жартылай өсьтері

setfillstyle(t,c) бояу стилін және оның түсін орнату; t – 0 .. 12 аралықтағы мәндерді қабылдайды, әдетте t = 1 - фигураны ағымдағы түспен толтыру

fillellipsc(x,y,rx,ry) суреттің түсін пайдалана отырып, іші боялған эллипс құру

floodfill(x,y,cg) шекарасына дейін фигураны cg түспен бояу; (x,y) - фигураның ішкі нүктесі

pieslice(x,y,a,b,r) дөңгелектің секторын құру және бояу

sector(x,y,a,b,rx,ry) эллипстік секторын құру және бояу

settextstyle(f,n,d) мәтін символының шрифтін, шығару бағытын және өлшемін анықтайды, f – шрифт (f = 0 болғанда стандартты нүктелі шрифт), n - шығару бағыты (0- горизонталь; 1 - вертикаль), d – символ өлшемі (1 .. 10 аралығындағы мәндер. Егер d = 1 және f = 0 болса, онда әр символ 8*8 нүктелерден тұратын квадратта орналасады, d > 1 болса квадрат қабырғасы d-ға көбейтіледі)

outtextxy(x,y,st) (х,у) нүктеден бастап, st жолды шығару

Outtext(st) нұсқағыштың ағымдағы орнынан бастап жолды шығару.

Мәтінді графикалық экранға шығару үшін алдымен settextslyle(f,n,d) процедурасы орындалады. Одан кейін outtextxy(x,y,st) процедура арқылы st жол (х,у) нүктеден бастап экранға шығарылады. Мысалы:

settextstyle(0,0,2);outtextxy(100,200,'горизонталь жол');

outtextxy(100,230,'өлшемі екі есе үлкейтілген');

Келесі мысалдарда:

  • Р32 программа ретімен жанатын 400 «жұлдыз» жұлдызды аспан және толық сары айды суреттейді;

  • Р33 программа қарапайым геометриялық образдарды пайдаланып, муарлы өрнек бейнесін салады, ол айырыласатын кесінділердің екі топтарының қиылысуы арқылы пайда болады. Өрнектің сапасы мен бейнесі негізінде үш параметрлерге тәуелді: kl, k2 – кесінділер арасындағы сол жақ және оң жақ арақашықтықтары; h – бүкіл топтың төмен (жоғары) жылжуы. Функциялардың графиктерін құру – техникалық есептерді шешуге арналған программалардың көбісінің айырылмас бөлігі болып табылады.

  • Р34 программада [а, b] кесіндіде y=x2sin(1/x) функцияның графигін құру мысалы келтірілген. Графиктің нүктелер саны (параметр m) еркін түрде беріледі (х = 0 нүктесі алынып тасталады, себебі ол нүктеде функция анықталмаған). Сонымен қатар, программада сәйкесінше X және Y өстері бойынша масштабтарды білдіретін t1=(x1-x0)/(b-a) және t2=(y1-y0)/(2m) шамалар анықталады. Қарастырылатын функцияның графигі [а,b] және [-0.1,0.1] екі кесінділерде бейнеленген. Басқа функцияның графигін құру үшін функцияның (function f) сипатталауныда оның аналитикалық түрін беру жеткілікті.

Қозғалатын бейнелерді келесі жоспар бойынша құру оңай:

  • экранның қажетті жерінде фрагментті салу;

  • оны фонның түсімен суреттеп немесе cleardevice процедураны пайдаланып фрагментті өшіру;

  • экранның басқа жерінде фрагментті қайта салу.

Мұндай тәсіл Р35 программада жүзеге асырылған, радиустары 5 пиксель түрлі түсті екі шарик бірдей жылдамдықпен bar процедура арқылы құрылған жазыл тікбұрыштың ішінде қозғалады. blou процедурасы шарик орталығының әр өсь бойынша тікбұрыштың қабырғаларынан жылжуын өлшейді және егер ол жылжу циклдың келесі қадамында радиустан кіші болып қалса серпінді шардың дуалға соқтығысуын модельдеп қозғалыс бағытын өзгертеді. Сонымен қатар, программада олардың қозғалу барысында шариктердің бір біріне тиіп кету жағдайы да қарастырылған. Ол мәселе оңай шешіледі: әр шарик өз қозғалыс бағытын қарама-қарсы бағытқа ауыстырады.

Сонымен, қорындылайтын болсақ. Паскаль программасында графикамен жұмыс жасау үшін ол іске қосылатын папкада egavga.bgi файлы болуы тиіс. Ол графикалық драйвер болып табылады.

Сонымен қатар, графикалық шығаруды қамтыған программаны компиляциялау барысында graph.tpu модульге қол жетерлік болуы тиіс, ол графикалық объекттерді суреттеуге арналған ішкі программаларды қамтиды. graph.tpu библиотекасы программаның сипаттау бөлімінде uses директивасы арқылы стандартты тәсілмен қосылады:

uses graph;

Кез келген пикселді кез келген түспен жарықтатуға болады. Әр пикселдің координаталары бүтін сандар парасымен анықталады:

  • x координата – жолдағы пикселдің нөмірі. Нөмірлеу 0-ден бастап, сол жақтан оң жаққа қарай орындалады;

  • y координата – пикселдер жолының нөмірі. Нөмірлеу 0-ден бастап жоғарыдан төмен қарай орындалады.

Сонымен, экранның сол жақтағы жоғарғы бұрышының координаталары (0, 0). Экран бетінде жарықтанатын кез келген объект жеке пикселдердің жиынтығы болып табылады.

Графикалық режимді initgraph процедурасына сілтеу арқылы жүзеге асырылады:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]