18-tema. Grafika modulı hám olar menen islew
REJE
1. Graph modulı Pascal tiliniń tiykarǵı modulı retinde
2. Moduldıń funktsiya hám proceduraları
3. Koordinatalar, áynekler hám betler.
4.Mi’sal
Turbo Pascal programmasın jumısqa túsiriw menen ekran tekstli jaǵdayda boladı hám egerde jaratılıp atırǵan programmada grafiklı ob'ektlerden paydalanıw názerde tutilsa displey adapterin grafikali jaǵdayǵa iykemlesiw zárúr boladı. Turbo Pascal programmalastırıw tiliniń 4. 0 versiyasınan baslap onıń paketi quramına grafiklı ob'ektler menen isleytuǵın bólim programmalardı qamtıp alǵan Graph modulı qosılǵan. Bul moduldıń bólim programmalarınan paydalanıw ushın kerekli drayverni (daryver- arnawlı programma bolıp, kompyuterge jalǵanǵan texnikalıq apparatlar iskerligin basqarıwǵa mólsherlengen) programma atqarılıwı ushın qosıw zárúr. Grafikalı drayver displey grafikalı jaǵdayda displey adapterin basqaradi. Borland firması barlıq tipdegi adapterler ushın bunday drayverlerdi islep shıqqan. ádetde bul drayverler programma paketiniń BGI (Borland Graphics Interfase) atlı papkasında jaylasqan boladı.
Grafiklı jaǵdayda ekrandı bir-birine júdá jaqın jaylasqan noqatlar sıyaqlı sawlelendiriw múmkin jáne bul noqatlar túrli reńlerde «jari’ti’li’p» suwret payda bolıwına xizmet etedi. Ayırım adapterlerdiń grafikalı jaǵdayları menen tanısamız :
SGA adapteri (Color Graphics Adapter-reńli grafikalı adapter). Bul adapter 5 grafik jaǵdaydı qollap -quvvtalaydi. Olardıń 4-tasi ekrandıń tómen múmkinshilikleri (gorizontal jónelis boyınsha 320 ta piksel (noqat ), vertakal jónelis boyınsha 200 dane piksel (noqat ) jaylasqan jaǵday ) ga sáykes keledi hám olar bir-birinen palitra -reńler kompleksi menen parıq etediler. Hár bir palitra 3 qıylı reńlerden ibarat. 5-shi jaǵday joqarı múmkinshilikli bolıp ekran sheshimi 640 x200 ge teń.
EGA adapteri (Enhanced Graphics Adapter-rawajlanıwlastırılgan grafikalı adapter). Ol SGA adapterin tákirarlaw menen birge tómen múmkinshilikli sheshimdi (640 x200, 16 qıylı reń) hám joqarı múmkinshilikli yechini (650 x480, 16 qıylı reń) qóllaw múmkinshiligin beredi.
MCGA adapteri (Multi-Color Graphics Adapter- reń-barang grafikalı adapter). Ol SGA adapterin tákirarlaw menen birge tómen múmkinshilikli sheshimdi (640 x480, 2 qıylı reń) qóllaw múmkinshiligin beredi.
vGA adapteri (video Graphics Array grafikalı videomassiv). Ol SGA hám EGA adapterlerin tákirarlaw menen birge olardı joqarı múmkinshilikli sheshim (640 x480, 16 qıylı reń) menen toldıradı.
Bunnan tısqarı SvGA, EGAvGA sıyaqlı qatar adapterler hám olardıń drayverlari ámeldegi bolıp, siz olar menen kelesi aktivyatlaringizda tolıq tanısasız.
Pascal programmalastırıw tili Graph modulınıń ayırım bólim programmaları menen tanısamız.
InitGgraph-protselurasi adapterdiń grafikalı jaǵdayǵa ótiwin támiyinleydi. Onıń bası tómendegishe:
procedure InitGraph (var Driver, mode: integer;Path:string);
Bul jerde: Driver- integer tipidagi ózgeriwshi bolıp, grafikalı drayver tipini anıqlaydı, mode- xam integer tipli ózgeriwshi bolıp, grafikalı drayverning jumısshı jaǵdayın anıqlaydı. Path-string tipli ózgeriwshi bolıp, drayver faylı jaylasqan mánzil-joldı anıqlaw ushın mólsherlengen ańlatpadan ibarat. Bul proceduradan paydalanıw ushın qandayda bir informaciya tasıwshı diskta álbette garfikali drayver faylı jaylasqan bolıwı shárt. Programma atqarılıw processinde bul drayver procedura járdeminde operativ yadqa juklenedi hám adapterdiń grafikalı jaǵdayǵa ótiwin támiyinleydi. Drayver tipi adapter tipi menen sáykes keliwi shárt. Graph modulında drayver tipini kórsetiw ushın tómendegi turaqlılıqlar anıqlanǵan:
Const
detect =0; {tipni avtomatikalıq anıqlaw}
CGA =1;
MCGA =2;
EGA =3;
EGA64 =4;
…
Júdá kóp adapterler túrli jaǵdaylarda isley aladılar jáne bul jaǵdaylar mode- ózgeriwshisi járdeminde anıqlanadı.
Proceduradan paydalanıwǵa mısal keltiremiz:
CGA. BGI drayveri S disktıń TP\BGI papkasında jaylasqan bolıp, ekrandıń 320 x200 sheshimli jaǵdayınan paydalanıw názerde tutılǵan bolsa proceduraǵa shaqırıq qılıwdı tómendegi tártipte ámelge asıramız :
uses Graph;
var
driver, mode:integer;
begin
driver:=CGA;
mode :=CGAC2;
InitGraph (driver, mode, 'c:\tp\BGI');
end.
Eger kompyuterdiń adapter tipi belgisiz bolsa yamasa jaratılıp atırǵan programma qálegen tipdagi adapter ushın mólsherlengen bolsa, proceduraǵa shaqırıq qılıwda drayver tipini avtomatikalıq anıqlawdı talap qılıw múmkin, yaǵnıy bul halda
driver:=detect;
InitGraph (driver, mode, 'c:\tp\BGI');
buyrıqlarınan paydalanıw múmkin. Bunda bir neshe grafikalı jaǵday isleytuǵın adapterler ushın mode-dıń maksimal ma`nisi avtomatikalıq saylanadı.
GraphResult funksiyası (grafikalı proceduralarǵa shaqırıq etilgende) integer tipidagi bahanı qaytaradı : 0-bahada qátelik joq ekenligi hám -14 ten -1 ge shekem bolǵan bahalarda aljasıqlarǵa jol qoyılǵanı haqqında «xabar» beredi.
GrapErrorMsg funksiyası String tipidagi maǵlıwmattı -qátelikti beriw ushın paydalanıladı.
GetDriverName funksiyası String tipidagi maǵlıwmattı - júklengen grafikalı drayver atınıń anıqlawda paydalanıladı.
GetModName funksiyası String tipidagi maǵlıwmattı - ekrandıń sheshim jaǵdayları (gorizontal hám vertikal jónelisler boyınsha pikseller muǵdarın ) hám adapterdiń jumıs jaǵdayı atınıń parametr boyınsha anıqlaw imkaniyatın beredi.
GetMaxMode funksiyası integer tipidagi shama bolıp, adapterdiń grafikalı jaǵdaylarınıń maksimal muǵdarın anıqlaydı.
CloseGraph procedurası adapterdiń grafik jaǵday daǵı jumıs iskerligin tugatib ekrandıń tekstli jaǵdayın tiklaydi.
RestoreCRTMode qısqa múddetke ekrandıń tekstli jaǵdayǵa qaytıwın támiyinleydi. CloseGraph procedurasıldan ayrıqsha ornatılǵan grafikalı jaǵday parametrleri saqlanashini támiyinleydi, yaǵnıy grafik drayver jaylasqan yaddıń bólegi tazalanmaydı.
GetGraphMode funksiyası integer tipidagi bahanı beredi jáne bul baha grafik adpterning ornatılǵan grafikalı jaǵdayın anıqlaydı.
SetGraphMode porotsedurasi adpterning jańa grafikalı jaǵdayın belgileydi.
Tómende joqarıda keltirilgen funksiya hám proceduralardan paydalanǵan halda Turbo Pascal programmalastırıw tilinde ekrandı grafik jaǵdayǵa ótkeriw hám kerekli jaǵdaylarda onı tekstli jaǵdayǵa waqtınsha ótkeriwshi programmanı keltiremiz:
uses Graph;
var
Driver, Mode, Error:integer;
begin
Driver:= Detect;
InitGraph (Driver, Mode, 'c:\tp\bgi');
Error:=Graphresult;
if Error<>grOk then
Writeln (graphErrorMsg (Error))
else
begin
Writeln ('Bul grafikalı jaǵday');
Writeln ('" Enter"-ni basıń... ':20 );
Readln;
RestoreCRTMode;
Writeln ('Bul tekstli jaǵday... ');
Readln;
SetGraphMode (GetGraphMode);
Writeln ('bu taǵı grafikalı jaǵday... ');
Readln;
CloseGraph
end
end.
Programmada keltirilgen «grok»(ma`nisi 0 ge teń bolǵan turaqlılıq ) Graphresult funksiyasın nátiyjesi bolıp, proceduralarǵa shaqırıq qılıwda qátelikke jol qoyılmalıǵin tekseriwde paydalanıladı.
1-másele. Programma quramında GetDriverName funksiyasınan paydalanıp, júklengen grafikalı drayver atınıń anıqlań.
uses Graph;
var
Driver, Mode, Error:integer; dr:string;
begin
Driver:= Detect;
InitGraph (Driver, Mode, 'c:\tp\bgi');
dr:=GetdriverName;
Writeln (dr, ' ');
Writeln ('" Enter" tuymesin basıń... ':50);
Readln;
CloseGraph ;
end.
Programma nátiyjesi júklengen grafikalı drayverga baylanıslı hám ol tómendegishe bolıwı múmkin:
2-másele. GetMaxMode funksiyasınan paydalanıp, adapterdiń grafikalı jaǵdaylarınıń maksimal muǵdarın anıqlawshı programma jaratıń.
uses Graph;
var
Driver, Mode, Error:integer; d:integer;
begin
Driver:= Detect;
InitGraph (Driver, Mode, 'c:\tp\bgi');
d:=GetMaxMode;
restorecrtMode;
Writeln (d);
Writeln ('" Enter" tuymesin basıń... ':50);
Readln;
CloseGraph ;
end.
Programma nátiyjesi:
3-másele. GetModName funksiyası járdeminde ekrandıń sheshim jaǵdayların hám adapterdiń jumıs jaǵdayı atınıń parametr boyınsha anıqlań.
Programma kórinisi:
uses Graph;
var
Driver, Mode, Error, i:integer; ds:string;
begin
Driver:= Detect;
InitGraph (Driver, Mode, 'c:\tp\bgi');
writeln (getdrivername);
for i:=0 tap 3 do
begin
ds:=GetModeName (i);
Writeln (ds);
end;
Writeln ('" Enter" tuymesin basıń... ':50);
Readln;
CloseGraph;
end.
Koordinatalar, áynekler hám betler.
Turbo Pascalning júdá kóp grafikalı proceduraları hám funksiyaları ekranda kórinip turıwshı kursordan ayrıqsha bolǵan “kózge taslanmas” ekinshi kursor -kórsetkishten paydalanıwadı. Bul kursordıń jaylasıwı ádetde (0, 0) koordinatalı noqatqa salıstırǵanda belgilenedi. Ulıwma, sızılatuǵın úst - maydan bólek noqatlar -piksellerden shólkemlesken. Noqattıń ornı onıń gorizontal (X) hám vertikal (Ol) koordinataları menen belgilenedi. Joqarı shep noqattıń koordinataları (0, 0) den ibarat. Koordinatalardıń bahaları vertikal jónelis boyınsha tepadan tómenge hám gorizontal jónelis boyınsha shep tárepten ońǵa artıp baradı. GetMaxX hám GetMaxY funksiyaları bahaları Word tipiga tiyisli bolıp, ekrandıń ámeldegi jumıs jaǵday daǵı koordinatalaring maksimal ma`nisin anıqlawda paydalanıladı.
(0, 0)
(GetMaxX,
GetMaxY)
Kursor -kórsetkish ornın integer tipidagi qimatlarni beretuǵın GetX hám Gety funksiyaları anıqlaw imkaniyatın berediler.
SetviewPort (x1, y1, x2, y2:integer;Clipon:Boolean)-procedurası ekranda joqarı shep noqatı koordinatalar (x1, y1) hám tómen oń noqatı koordinataları (x2, y2) bolǵan tuwrı tórtmuyush formasındaǵı aynanı jaratıwda qollanıladı. Boolean tipidagi ańlatpa ma`nisine kóre usı aynaǵa sig'mayotgan suwret elementlerin «qirqish» ushın beriledi. Bul ańlatpanıń True ma`nisinde usı procedura járdeminde anıqlanǵan tarawǵa suwret elementleri sig'masa, olar qırqıladılar, kerisinshe False ma`nisinde tarawdıń shegaraları «bekor» etiledi.
MoveTap (x, y:integer)-procedurası ekranda kórsetkishni koordinatalar (x, y) bolǵan noqatqa jaylastıradı jáne bul jaylastırıw ayna ornatilmagan halda (0, 0) noqatqa salıstırǵanda ámelge asıriladı.
MoveRel (dx, dy:integer)-procedurası ekranda kórsetkishni jańa noqatqa ámeldegi koordinatalarına salıstırǵanda dx, dy-arttırıwlar boyınsha jaylastırıw imkaniyatın beredi.
SetbkSolor (n)- procedurası ekran fonın kórsetilgen n-parametrge uyqas keliwshi (0 den 15 ke shekem) reń menen beriliwin támiyinleydi.
ClearDevice- procedurası grafik ekrandı toazlab, onıń fonın SetbkSolor menen anıqlanǵan reń menen «bo'yalishi»ga xızmet etedi.
ClearDevice- procedurası jaratılǵan grafik aynanı, eger ol «to'liq ekran» jaǵdayında anıqlanbaǵan bolsa tazalaydı hám kórsegish aynanıń shep joqarı noqatına jaylasadı.
Soraw hám tapsırmalar.
1. Paskalda Graph modulı qanday maqsette qollanıladı?
2. Grafiklı drayver ne hám ol qanday vaifani atqaradı?
3. Ekrandı grafik jaǵdayǵa ótkeriw ushın Pascalda qanday kórsetpe beriledi?
4. Grafik xolatdan shıǵıw ushın qaysı operatordan paydalanıladı?
5. Ekrandı grafik jaǵdayǵa ótkerilgende yurgichning kórinisi qanday boladı?
6. Grafik xolatda ekrandıń qaysı noqatı ámeldegi noqat boladı?
7. GetMaxX hám GetMaxY funksiyaların wazıypaların aytıp beriń.
Tiykarǵı ádebiyatlar :
1. Slinkin D. A. Osnovi programmirovaniya na Turbo-Paskale: Uchebno-metodicheskoe posobie dlya studentov vuzov. Shadrinsk: Izd-vo Shadrinskogo pedinstituta, 2003.- 134-136 cs.
2. Faronov V. V. Turbo Pascal. — SPb.: VXV- Sankt-Peterburg, 2004.- 1056 c. (301-320 cc)
3. M. Ol. Ashurov, N. D. Xatkerxmedova. Turbo Pascal programmalastırıw tili. (stilistik qóllanba ), Tashkent TDPU - 2011 (81-87)
Do'stlaringiz bilan baham: |