Ìîäóëü Graph – áèáëèîòåêà ãðàôè÷åñêèõ ïîäïðîãðàìì, îáåñïå÷èâàþùèõ èñïîëüçîâàíèå öâåòîâîé è ðàçðåøàþùåé ñïîñîáíîñòåé ýêðàíà.
Íàñòðîéêà ãðàôè÷åñêèõ ïðîöåäóð ñ êîíêðåòíûì àäàïòåðîì äîñòèãàåòñÿ çà ñ÷åò ïîäêëþ÷åíèÿ ñîîòâåòñòâóþùåãî ãðàôè÷åñêîãî äðàéâåðà.
Äðàéâåð – ñïåöèàëüíàÿ ïðîãðàììà, îñóùåñòâëÿþùàÿ óïðàâëåíèå ñîîòâåòñòâóþùèìè òåõíè÷åñêèìè ñðåäñòâàìè êîìïüþòåðà.
Äëÿ ïîääåðæêè òåõíè÷åñêèõ ñðåäñòâ êîìïüþòåðà èñïîëüçóþòñÿ ñëåäóþùèå äðàéâåðû:
− CGA.BGI – äðàéâåð äëÿ CGA, MCGA (BGI – Borland Graphics Interfase);
− EGA VGA .BGI – äðàéâåð äëÿ EGA, VGA;
− HERC.BGI — äðàéâåð äëÿ ìîíîõðîìíîãî Hercules;
− ATT.BGI – äðàéâåð äëÿ ÀÒ&Ò6300 (400 ñòðîê);
− PC3270.BGI – äðàéâåð äëÿ IBM 3270 PC;
− IBM8514.BGI – äðàéâåð äëÿ IBM 8514 è äð.
Ââåäåì ñëåäóþùèå ïîíÿòèÿ.
Ðåæèì ðàáîòû ýêðàíà – ðåàëèçàöèÿ óïðàâëåíèÿ ñâå÷åíèåì ñîâîêóïíîñòè áëèçêî ðàñïîëîæåííûõ òî÷åê – ïèêñåëåé, ñâåòèìîñòü êîòîðûõ óïðàâëÿåòñÿ ñ ïîìîùüþ ïðîãðàììû.
Ðàçðåøàþùàÿ ñïîñîáíîñòü ýêðàíà (ðàçðåøåíèå ýêðàíà) – îáùåå êîëè÷åñòâî ïèêñåëåé è êîëè÷åñòâî öâåòîâ (îòòåíêîâ), êîòîðûìè ìîæåò ñâåòèòüñÿ êàæäûé èç íèõ.
Ãðàôè÷åñêàÿ ñòðàíèöà – îáëàñòü îïåðàòèâíîé ïàìÿòè êîìïüþòåðà (êàðòà ýêðàíà), èñïîëüçóåìàÿ äëÿ çàïîìèíàíèÿ èíôîðìàöèè î ñâåòèìîñòè (öâåòå) êàæäîãî ïèêñåëÿ.
Ðàçëè÷àþò ñëåäóþùèå ãðàôè÷åñêèå ðåæèìû ðàáîòû äëÿ êàæäîãî òèïà àäàïòåðîâ.
Àäàïòåð CGA ýìóëèðóåò 5 ãðàôè÷åñêèõ ðåæèìîâ, ñðåäè íèõ ðåæèìû íèçêîãî ðàçðåøåíèÿ ýêðàíà – 320x200 ïèêñåëåé:
ïàëèòðà 0: ñâåòëî-çåëåíûé, ðîçîâûé, æåëòûé + ÷åðíûé, ïàëèòðà 1: ñâåòëî-ãîëóáîé, ñâåòëî-ôèîëåòîâûé, áåëûé + ÷åðíûé, ïàëèòðà 2: çåëåíûé, êðàñíûé, êîðè÷íåâûé + ÷åðíûé, ïàëèòðà 3: ãîëóáîé, ôèîëåòîâûé, ñâåòëî-ñåðûé + ÷åðíûé; è âûñîêîãî ðàçðåøåíèÿ ýêðàíà – 640x200 ïðè èñïîëüçîâàíèè äâóõ öâåòîâ, ïðè ÷åì îäèí èç íèõ – âñåãäà ÷åðíûé.
Ãðàôè÷åñêèé àäàïòåð CGA èñïîëüçóåò îäíó ñòðàíèöó. Àäàïòåð EGA ýìóëèðóåò ãðàôè÷åñêèå ðåæèìû CGA è ðåæèìû íèçêîãî ðàçðåøåíèÿ: 6400x200, 16 öâåòîâ, 4 ñòðàíèöû; âûñîêîãî ðàçðåøåíèÿ: 640x350, 16 öâåòîâ, 1 ñòðàíèöà.
Àäàïòåð VGA ýìóëèðóåò ðåæèìû àäàïòåðîâ CGA, EGA è ðåæèì âûñîêîãî ðàçðåøåíèÿ: 640x480, 16 öâåòîâ, 1 ñòðàíèöà.
Àäàïòåð SVGA ýìóëèðóåò ðåæèì àäàïòåðà VGA, äîñòèãàÿ ðåæèìà ðàçðåøåíèÿ 1024x768, 256 öâåòîâ (îòòåíêîâ).
Äëÿ ìîäóëÿ Graph îïðåäåëåíû ñëåäóþùèå ïðîöåäóðû è ôóíêöèè.
Óïðàâëåíèå ãðàôè÷åñêèì ðåæèìîì
Ïðîöåäóðà InitGraph – èíèöèèðóåò ãðàôè÷åñêèé ðåæèì ðàáîòû àäàïòåðà.
Ôîðìàò:
InitGraph(Driver,Mode, 'Path');
Ïåðåìåííûå:
Driver – òèï ãðàôè÷åñêîãî äðàéâåðà: Const.
Äèàïàçîí çíà÷åíèé:
Detect = 0; {Ðåæèì àâòîîïðåäåëåíèÿ òèïà äðàéâåðà}
CGA=1;
MCGA = 2;
EGA=3;
VGA = 9.
Mode – ðåæèì ðàáîòû ãðàôè÷åñêîãî àäàïòåðà.
Çíà÷åíèÿ Mode äëÿ EGA:
Const
EGALo = 0; {640x200, 16 öâåòîâ}
EGAHi = 1; {640x350, 16 öâåòîâ}
EGAMonoHi = 3; {640x350, 2 öâåòà}
äëÿ VGA:
Const
VGALo = 0; {640x200}
VGAMed = 1; {640x350}
VGAHi = 2; {640x480}
Path – ïîëíîå èìÿ ôàéëà äðàéâåðà (ïóòü + èìÿ ôàéëà).
Ïðîöåäóðà SetGraphMode – óñòàíàâëèâàåò íîâûé ðåæèì ðàáîòû àäàïòåðà.
Ôîðìàò:
SetGraphMode(Mode: Integer);
Mode – êîä óñòàíàâëèâàåìîãî ðåæèìà.
Íàïðèìåð, îáðàùåíèå ê ïðîöåäóðå InitGraph, èñïîëüçóþùåé äðàéâåð EGA.BGI, êîòîðûé íàõîäèòñÿ â êàòàëîãå TPBGI íà äèñêå Ñ, è óñòàíàâëèâàþùåé ðåæèì ðàáîòû 640x350,16 öâåòîâ, ñëåäóåò ïîêàçàòü ñëåäóþùèì îáðàçîì: Uses Graph; Var
Driver, Mode: Integer;
Begin
Ddriver := EGA; {Äðàéâåð}
Mode := EGAHi; {Ðåæèì ðàáîòû}
InitGraph(Driver,Mode,'C:TPBGr);
Ïðè àâòîìàòè÷åñêîì îïðåäåëåíèè òèïà äðàéâåðà â òåêñò ïðåäûäóùåãî ïðèìåðà ñëåäóåò âíåñòè èçìåíåíèÿ:
Driver := Detect;
InitGraph(Driver, Mode, 'C:TP');
|