Программа денесі(операторлар тізбегі)



бет74/163
Дата07.02.2022
өлшемі4,26 Mb.
#94523
түріПрограмма
1   ...   70   71   72   73   74   75   76   77   ...   163
Байланысты:
cda6b05d-8cb5-11e3-bf6e-f6d299da70eeУММ ПР1

Ағымдағы түсті таңдау
Экранға бейнені шығаратын Graph модулінің барлық ішкі программалары SetColor процедурасы орнатқан ағымдағы түсті пайдаланады.
SetColor процедурасы ағымдағы түсті – қолданылған палитраның түстерінің бірін орнатады. Тақырыбы:
Procedure SetColor(Color:Word);
Мұндағы Color – жаңа ағымдағы түс.
Color параметрі қабылдай алатын мәндер Graph модулінде анықталған тұрақтылар жиынтығымен анықталады. Төмендегі 4-кестеден осы тұрақтыладың тізімін көруге болады.
4-кесте

Тұрақты атауы

Коды

Түсі

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

Ақ

Blink

128

Жыпылықтау

Мысалы, SetColor(3) жолы коды 3 болатын көгілдір түсті ағымдағы түс етеді. Жоғарыдағы кесте CRT модуліндегі түстер кестесімен сәйкес келеді.




Шаблондар мен толтыру түстерін таңдау
Графиканы бейнелеуде экрандағы түйық аймақты толтыру қажеттігі жиі туындайды. Толтыру өрнегін және түсін таңдауға SetFillStyle процедурасы мүмкіндік береді.
SetFillStyle процедурасы толтыру түсі мен шаблонын анықтайды. Тақырыбы:
Procedure SetFillStyle(Pattern:Word; Color:Word);
Мұндағы Pattern – толтыру шаблоны; Color – толтыру түсі.
Graph модулінде бірқатар дайын толтыру шаблондары бар. Төмендегі 5-кестеде осы шаблондардың тізімі келтірілген.
5-кесте

Тұрақты атауы

Коды

Толтыру

EmptyFill

0

Фон түсімен толтыру (өрнексіз)

SolidFill

1

Ағымдағы түспен толтыру (SetColor процедурасы арқылы орнатылған)

LineFill

2







LtSlashFill

3







SlashFill

4







BkSlashFill

5







LtBkSlashFill

6







HatchFill

7







XHatchFill

8







InterleaveFill

9







WideDotFill

10







CloseDotFill

11







UserFill

12

Пайдаланушы анықтаған толтыру шаблоны

Үнсіз келісім бойынша SolidFill (коды 1) тұрақтысы және ағымдағы палитраның максималды номерлі түсі қолданылады. SetFillStyle процедурасы анықтаған толтыру мен түс толтыру амалы қолданылатын барлық процедуралар мен функцияларда қолданылады. Егер Pattern параметрі UserFill (12 код) мәніне ие болса, онда пайдаланушы анықтаған қалып пайдаланылады.
Егер SetFillStyle процедурасына қате парамтрлер берілсе, онда GraphResult функциясы grError мәнін қайтарады да(қателіктер кестесін қара), ағымдағы толтыру қалыптары өзгертілмейді.


Пайдаланушы дайындаған толтыру қалыптары
Егер Turbo Pascal ұсынған дайын қалыптар ұнамаса, онда пайдаланушы өзінің қалпын жасауына болады. Бұл жағдайда SetFillPattern процедурасы қолданылады.
SetFillPattern процедурасы жеке толтыру қалпын анықтауға көмектеседі. Тақырыбы:
Procedure SetFillPattern(Pattern:FillPatternType; Color:Word);
Мұндағы Pattern – FillPatternType типіне жататын және пайдаланушының толтыру қалпын анықтайтын мән; Color – толтыру түсі.
FillPatternType типі GRAPH модулінде анықталған. Оның сипаттамасы келесі түрде:
Type
FillPatternType = array[1..8] of Byte;
Byte типінің 8 мәнінен тұратын массивті көрсететін FillPatternType типі 8х8 пиксельдер матрицасының жарықтануын басқаруға мүмкіндік береді. Егер осы 64 биттің қайсыбірі 1-ге тең мәнге ие болса, сол пиксель жарықтанады; 0-ге тең болса, жарықтанбайды. Толтыру амалы орындалған кезде экран әрбіреуі осындай матрица болатындай торкөздер жиынына бөлінгендей болады. Бұл кезде әрбір матрицаның жарықтанған және жарықтанбаған пиксельдері экранды қайталанған өрнекке толтырады. О сындай дайындалған қалыптардың екеуін 2-суреттен көруге болады.
Бұл жерде 8х8 матрицалары бар екі шаблон көрсетілген. Матрицалардың сәйкес байттарының ондық мәндері жанынан көрсетілген.
SetUserCharSize процедурасы тек векторлық мәтіндерге ғана әсер етеді.


Қозғалатын бейнені шығару
Қозғалатын бейнені бейнелеу кезінде видеожады парақтар деп аталатын аумақтарға бөлінеді. Бұл кезде уақыттың әр мезетінде бір ғана парақ бейнеленеді, ал шығаруды кез-келген параққа орындауға болады. Осылайша алдын-ала дайындалған парақтарды тізбекті түрде экранға шығару қолайлы. Бұл тәсіл көбінесе әртүрлі анимацияларды жасау кезінде қолданылады. Graph модулінде парақтармен жұмыс істеуге арналған екі процедура бар. SetActivPage процедурасы видеожадының бір бір парағын белсендіреді. Тақырыбы:
Procedure SetActivPage(Page:Word);
Мұндағы Page – парақ номері.
Барлық графикалық шығарулар Page номерлі белсенді параққа бағытталады. Көппарақты шығару тек EGA, VGA және т.б. сәйкес видеоадаптерлердің бар болуында ғана жүзеге асады.
SetVisualPage процедурасы номері процедура параметрі ретінде көрсетілген графикалық парақты көрсетеді. Тақырыбы:
Procedure SetVisualPage(Page:Word);
Мұндағы Page - парақ номері.
Көрінетін парақ – экранда бейнеленетін парақ. Ал белсенді парақ шығарылу жүзеге асатын парақ. Басқаша айтқанда, программа графикалық құрауларды көрінбейтін (бірақ, белсенді) параққа орындайды да, соңынан осы процедураның көмегімен осы парақты шығарады, осымен сол мезетте экранда бейнені бейнелейді.
Төмендегі мысалда көппарақты шығаруды қолданатын программаны көруге болады.
Program SetPage;
Uses graph, crt;
Var I, j, r, Dx, Dy, Err:integer; x,y:word;
Begin
I:=3; j:=0;
initGraph(I,j,’’);
if Err<>grOk then
Writeln(GraphErrorMsg(Err))
Else
Begin
GetAspectRatio(x,y);
R:=5;
For i:=0 to 15 do
Begin
SetActivePage(i);
Circle(320, 100, 100);
Dx:=320+Round(30*Cos(i*2*Pi/16)*y/x);
Dy:=100-Round(30*Sin(i*2*Pi/16));
FillEllipse(Dx, Dy, R*Round(y/x),r);
End;
While not KeyPressed=True do
for I:=0 to 15 do
begin
SetVisualPage(i);
Delay(200);
End;
CloseGraph;
End
End.
Б ұл программаның жұмыс нәтижесін 28-суреттен көруге болады.
Бұл программада EGA драйвері үшін 0 режимі таңдалынған. Егер 2-кестеге қарайтын болсақ, бұл режим 4-парақты шығаруды қолдайды – қозғалыс эффектісін жасауға ең қолайлы режим. Осы программада екі цикл ұйымдастырылған. Бірінші циклда парақтар толтырылады, екіншісінде – демонстрацияланады. Парақтардың кезектесуі ірі нүктелердің шеңбер бойынша айналу эффектісін қамтамасыз етеді.
Программаны аяқтау үшін кез-келген пернені басу жеткілікті.




Достарыңызбен бөлісу:
1   ...   70   71   72   73   74   75   76   77   ...   163




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет