Егер Driver параметрінің мәні Detect(0) – ге тең болса, жүйе видеоадаптердің типін автоматты түрде анықтауға тырысады. Бұл жағдайда InitGraph процедурасы DetectGraph процедурасын шақырады. Егер графикалық аппараттық жабдық табылса, сәйкес графикалық драйвер инициализацияланып, графикалық режим іске қосылады. Мұнда DetectGraph процедурасы жұмысын аяқтағаннан кейін Driver және Mode параметр-айнымалыларының мәндері драйвердің сәйкес коды мен видеоадаптердің жұмыс режимінің мәндерін қабылдайды. Егер Driver параметрі Detect мәнінен басқа болса, драйвер көрсетілген мәнге байланысты таңдалынады. Осыдан кейін видеожүйе берілген Mode параметрі анықтаған режимге өтеді.
DetectGraph процедурасы (әдетте InitGraph процедурасымен шақырылатын) құрылғыны тестілеп, осы видеоадаптерге қандай графикалық драйвер мен режим сәйкес келетінін анықтайды. Тақырыбы:
Procedure DetectGraph(var Driver, Mode: Integer);
Мұндағы Driver – графикалық драйвердің сәйкес келетін типін анықтайтын параметр; Mode – осы драйвер қолдайтын графикалық режимдердің біреуін беретін параметр.
Driver параметріне Detect-тен басқа мән беру қажеттілігі DetectGraph процедурасы ұсынған драйверден басқа драйвер қолдану қажет болған жағдайда туындайды.
-
Егер InitGraph процедурасында белгілі бір драйвер (яғни Driver параметріне Detect-тен басқа мән берілсе) көрсетілсе, бұл жағдайда сол сияқты осы драйвер үшін мүмкін режим көрсетілуі қажет (Mode параметрі).
-
Автотабуды қолдану мақсаты – кез-келген видеоадаптерлі компьютерде жұмыс істейтін программа жасау екенін түсіну қажет. Егер графикалық драйвер мен режим анық көрсетілген болса, бұл жасалынған программаны қолдануды күрделендіреді.
Егер сіз автотабуды қолданбауға шешім қабылдасаңыз (яғни Driver параметріне Detect-тен басқа мән бергіңіз келсе), онда таңдалынған драйверге мүмкін графикалық режим көрсетуіңіз қажет. Әртүрлі видеоадаптерлерге арналған режимдерді анықтайтын тұрақтылар мен олардың сандық кодтары төмендегі 2-кестеде көрсетілген.
2-кесте.
Тұрақтының атауы
|
Код
|
Шешім
|
Палитра
|
Беттерді қолдау
|
CGA драйвері
|
CGAC0
|
0
|
320x200
|
C0
|
1
|
CGAC1
|
1
|
320x200
|
C1
|
1
|
CGAC2
|
2
|
320x200
|
C2
|
1
|
CGAC3
|
3
|
320x200
|
C3
|
1
|
CGAHi
|
4
|
640x200
|
2 түс
|
1
|
MCGA драйвері
|
MCGAC0
|
0
|
320x200
|
C0
|
1
|
MCGAC1
|
1
|
320x200
|
C1
|
1
|
MCGAC2
|
2
|
320x200
|
C2
|
1
|
MCGAC3
|
3
|
320x200
|
C3
|
1
|
MCGAMed
|
4
|
640x480
|
2 түс
|
1
|
MCGAHi
|
5
|
640x480
|
2 түс
|
1
|
EGA драйвері
|
EGALo
|
0
|
640x200
|
16 түс
|
4
|
EGAHi
|
1
|
640x350
|
16 түс
|
2
|
EGA64 драйвері
|
EGA64 Lo
|
0
|
640x200
|
16 түс
|
1
|
EGA64Hi
|
1
|
640x350
|
4 түс
|
1
|
EGA-MONO драйвері
|
EGAMonoHi
|
3
|
640x350
|
2 түс
|
1
|
EGAMonoHi
|
3
|
640x350
|
2 түс
|
2
|
HERC драйвері
|
HERCMonoHi
|
0
|
720x348
|
2 түс
|
2
|
ATT400 драйвері
|
ATT400C0
|
0
|
320x200
|
C0
|
1
|
ATT400C1
|
1
|
320x200
|
C1
|
1
|
ATT400C2
|
2
|
320x200
|
C2
|
1
|
ATT400C3
|
3
|
320x200
|
C3
|
1
|
ATT400CMed
|
4
|
640x200
|
2 түс
|
1
|
ATT400CHi
|
5
|
640x400
|
2 түс
|
1
|
VGA драйвері
|
VGALo
|
0
|
640x200
|
16 түс
|
2
|
VGAMed
|
1
|
640x350
|
16 түс
|
2
|
VGAHi
|
2
|
640x480
|
16 түс
|
1
|
PC3270 драйвері
|
PC3270Hi
|
0
|
720X350
|
2 түс
|
1
|
IBM8514 драйвері
|
IBM8514Lo
|
0
|
640x480
|
256 түс
|
1
|
IBM8514Hi
|
0
|
1024x768
|
256 түс
|
1
|
Кестенің 4-ші бағанында түстер туралы ақпарат көрсетілген.
Графикалық амалдың қателігі
Графикалық амалдарды орындау кезінде әртүрлі қателіктер болуы мүмкін (мысалы, видеоадаптерді анықтай немесе драйверді таба алмады). Егер қателік болса, оның сипатын анықтауға GraphResult функциясы көмектеседі.
GraphResult функциясы соңғы орындалған графикалық амал қателігінің кодын береді. Тақырыбы:
Function GraphResult: Integer;
Қателік кодын Graph модулінің келесі процедуралары мен функциялары орнатады:
Bar, Bar3D, ClearViewPort, CloseGraph, Detect Graph, DrawPoly, FillPoly, FloodFill, Get GraphMode, ImageSize, InitGraph, InstallUserDriver, InstallUserFont, PieSlice, RegisterBGIdriver, RegisterBGIfont, SetAllPalette, SetFillPatterrn, SetFilllStyle, SetGraphBufSize, SetGraphMode, SetLineStyle, SetPalette, SetTextJustify, SetTextStyle.
GraphResult функциясы қайтаратын мәндер Graph модулінде жарияланған тұрақтылармен анықталады.
Графикалық амалдардың қателіктерінің тұрақтылары мен кодтары 3-кестеде көрсетілген.
3-кесте
Тұрақты атауы
|
Код
|
Текстік хабарлама
|
grOk
|
0
|
Қатесіз
|
grNoInitGraph
|
-1
|
Графикалық режим инициализацияланбаған
|
grNotDetected
|
-2
|
Адаптер типін анықтай алмады
|
grFileNotFound
|
-3
|
Драйверлі файл табылмады
|
grInvalidDriver
|
-4
|
Табылған файл сәйкес драйверден тұрмайды
|
GrNoLoadMem
|
-5
|
Драйверді жүктеуге жады жеткіліксіз
|
grNoScanMem
|
-6
|
Аймақтарды қарауға жады жеткіліксіз
|
grNoFloodMem
|
-7
|
Аймақтарды толтыру үшін жады жеткіліксіз
|
grFontNotFound
|
-8
|
Қаріптері бар файл табылмады
|
grNoFontMem
|
-9
|
Қаріпті жүктеуге жады жеткіліксіз
|
grInvalidMode
|
-10
|
Таңдалынған драйверге мүмкін емес режим
|
grError
|
-11
|
Жалпы қателік
|
grIOerror
|
-12
|
Енгізу-шығару қателігі
|
grInvalidFont
|
-13
|
Қаріптің дұрыс емес форматы
|
grInvalidFontNum
|
-14
|
Қаріптің дұрыс емес номері
|
GraphResult функциясын шақырғанда графикалық амалдың қателігінің кодын шақырады, және де бұл кезде жүйеде қателік коды 0-ге (grOk) орнатылады. Егер соңынан GraphResult функциясын қайта шақырса, онда осы нәтиже (grOk) қайтарылады.
GraphResult функциясының нәтижесінен қателік сипатын ұғу қиын болады. Сондықтан Turbo Pascal-да GraphErrorMsg функциясы қарастырылған. Оның параметрі ретінде GraphResult функциясы қайтарған код көрсетіліп, нәтижесі сәйкес қателік туралы экранға шығарылатын хабарлама болып табылады.
GraphErrorMsg функциясы оның сандық коды бойынша қателік туралы хабарлама мәтінін (ағылшын тілінде) қайтарады. Тақырыбы:
Function GraphErrorMsg(ErrorCode:Integer):string;
Мұндағы, ErrorCode - GraphResult функциясы қайтарған қателік коды.
Төмендегі мысалдағы программа барлық қателіктердің сандық кодтарын және оларға сәйкес хабарламаларды экранға шығарады.
Program GrErMsg;
Uses Graph;
Var i:integer;
Begin
For i:=0 to 14 do
Writeln(-i:3, ‘=’, GraphErrorMsg(-i));
End.
Қолданылатын графикалық режим туралы ақпарат
Осы мезетте қандай графикалық режим (DetectGraph процедурасы арқылы таңдалынған) қолданылып тұр? Қандай графикалық драйвер қолданылып тұр? Осы графикалық адаптер үшін қолданылған драйвердің қай графикалық режимін мейлінше қолдануға болады. Графикалық программаларды құру кезінде көбінесе осындай сұрақтарға жауапты білу қажет болады. Осы мәліметтерді анықтауға GetModeName, GetDriverName, GetMaxMode процедуралары көмектеседі.
GetModeName функциясы графикалық режим қолданатын тұрақтының атауын қайтарады. Тақырыбы:
Function GetModeName(ModeNumber:Integer):string;
Мұндағы ModeNumber – графикалық режимнің коды.
GetDriverName функциясы осы мезетте драйверлер қолданып тұрған файлдың атауын (кеңейтілусіз) көрсетеді (яғни, .BGI-файлдар). Тақырыбы:
Function GetDriverName:string;
GetMaxMode функциясы ең мүмкін графикалық режимнің кодын береді. Тақырыбы:
Function GetMaxMode: Integer;
GetMaxMode функциясы осы қолданылған адаптер жұмыс істей алатын ең мүмкін графикалық режимнің (жүктелген графикалық режимнің) кодын анықтауға мүмкіндік береді.
Төмендегі мысалдан GetModeName, GetDriverName, GetMaxMode функциялары қолданылған программаны көресіздер:
Program ModDrive;
Uses graph;
Var i,j,k,Err:integer;
Begin
I:=Detect;
Initgraph(i,j,’ ‘);
Err:=GraphResult;
If Err<>grOk then
Writeln(GraphErrorMsg(Err))
Else
For k:=0 to GetMaxMode do
Begin
Writeln(‘драйвер:’, GetDriverName, ‘; Режим: ‘, GetModeName(k));
End;
Readln;
CloseGraph;
End.
Бұл программада графикалық режимге өтуді келесі операторлар жүзеге асырады:
I:=Detect;
Initgraph(i,j,’ ‘);
Графикалық режимге өтуде қателік жіберілгенін тексеру келесі түрде жүзеге асырылады:
Err:=GraphResult;
If Err<>grOk then
Writeln(GraphErrorMsg(Err))
Else...
Мұндай тексеру графикалық режим қолданылатын әрбір программада қарастырылу керек (GraphResult функциясы дәл осыған арналған).
Әрі қарай GetModeName, GetDriverName және GetMaxMode функцияларының көмегімен қажетті ақпарат анықталып (драйвер файлының атауы және мүмкін графикалық режимдер тізімі), экранға шығарылады.
Мұндай программаны іске қосқаннан кейін графикалық режим қосылып, жұмыс нәтижелері графикалық экранға шығарылады. Бұл нәтижелерді көру үшін ең дұрысы программаға параметрсіз Readln операторын қосқан дұрыс. Нәтижесінде программа пернетақтадан енгізуді тосып, экрандағы бейнені көруге мүмкіндік бере отырып, жұмысты тоқтата тұрады. Программа жұмысын жалғастыру үшін пернесін басу жеткілікті.
Ең соңында графикалық режимдегі видеоадаптердің жұмысын аяқтайтын CloseGraph процедурасы шақырылады.
Графикалық драйверлер режимі
Алдыңғы тақырыпта қолданылатын графикалық режимдер және графикалық драйверлер туралы қажетті ақпаратты анықтау қажеттігі туралы сөз болды. Осындай есепті GetModeRange процедурасы орындайды. Ол берілген драйвер үшін мүмкін графикалық режимдер туралы ақпаратты береді.
GetModeRange процедурасы көрсетілген графикалық драйвер үшін мүмкін графикалық режимдердің кодтарының диапазонын береді. Тақырыбы:
Procedure GetModeRange(Driver:Integer; var MinMode, MaxMode:Integer);
Мұндағы Driver – берілген графикалық драйвер коды; MinMode -«ең кіші» режим коды; MaxMode – шектік режим коды.
Егер Driver – параметрінің мәні қате болса, онда MinMode және MaxMode айнымалылары -1 мәнін қайтарады.
GetModeRange процедурасын қолданар алдында графикалық режимге өту міндетті емес.
Төмендегі мысалдан GetModeRange процедурасын қолдануды көруге болады:
Program ModeRange;
Uses Graph;
Const
D:array[1..11] of String[8]=
(‘CGA ‘,’MCGA ‘, ‘EGA ‘,’EGA64 ‘, ‘EGAMono’, ‘IBM8514 ‘,’HercMono ‘, ‘ATT400 ‘, ‘VGA ‘,’PC3270 ‘,’ERROR ‘);
Var i,j,k:integer;
Begin
Writeln;
Writeln(‘Driver’, ‘MinMode’:11, ‘MaxMode’:10);
Writeln(‘---------------------------------------------’);
For i:=1 to 11 do
Begin
GetModeRange(I,j,k);
Writeln(d[i],j:6,k:10)
End;
End.
Программа нәтижесі:
Бұл программада денесінде GetModeRange процедурасы шақырылған цикл ұйымдастырылған, және де цикл параметрінің мәні процедураға оның Driver – параметрінің мәні ретінде беріледі. Осы процедура берген минималды жәнен максималды режимдер мәндері әрбір драйвер үшін экранға жол түрінде беріледі. Нәтижесінде мәндер кестесі жасалады. Бұл кестені анығырақ ету үшін программада тұрақтылар массиві жарияланды, оның элементтері драйверлердің әріптік белгіленуі болып табылатын string типті мәндер. Бұл белгілеулер кестенің бірінші бағанында көрсетілген.
GetModeRange процедурасының драйвер кодының мүмкін емес мәніне қалай жауап қататынын тексеру үшін цикл саны 11-ге дейін көбейтілді (1..10-драйверлердің мүмкін кодтары). Нәтижесінде мүмкін емес мән (11) үшін GetModeRange процедурасы MinMode және MaxMode параметрлері үшін -1 мәнін берді.
Графикалық режимнен шығу
Кез-келген графикалық режимге өту жүзеге асатын программада осы режимнен шығу қарастырылу керек. Графикалық режимнен шығуға CloseGraph процедурасы мүмкіндік береді.
CloseGraph процедурасы графикалық режимге өтуге дейінгі қолданылған видеорежимді (мәтіндік режим) қалпына келтіреді.
Тақырыбы:
Procedure CloseGraph;
Түстер мен толтырулар
Turbo Pascal программасында экранға бейнені шығару түрлі түстерді қолдану арқылы жүзеге асырылады. Сол сияқты қандай-да бір тұйық фигураны белгілі бір түсті толық фонмен немесе қандай-да бір өрнекпен толтыруға болады.
Ағымдағы түсті таңдау
Экранға бейнені шығаратын 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 мәнін қайтарады да(қателіктер кестесін қара), ағымдағы толтыру қалыптары өзгертілмейді.
Достарыңызбен бөлісу: |