kategória | ||||||||||
|
||||||||||
|
||
A Graph unit fontosabb beépített konstansai, függvényei, eljárásai; használata
A szöveges felület kezelésénél már volt szó
arról, milyen fontos része a programoknak a felhasználói felület. Ennek
kialakítása során két lehetõség közül választhatunk, a szöveges és a
grafikus felület között. A CRT unit és a szöveges felület használatáról a 11.
tételben részletesen volt szó. A grafikus felülettel rendelkezõ
programok lényegesen meghaladják a szöveges felülettel rendelkezõk
lehetõségeit, a megjelenés esztétikusabb, szebb, áttekinthetõbb.
A grafikus felület egyetlen hátránya, hogy kialakítása során sokkal inkább
figyelembe kell venni a számítógép hardware kiépítettségét, mint szöveges
felület esetén. A 80x25 karakterfelbontást - szöveges képernyõ esetén -
már a CGA monitorok is képesek voltak teljesíteni., a grafikus programok
esetében sokkal nagyobb eltérésekkel kell számolni az egyes
képernyõtipusok esetén. Manapság az SVGA monitorok szélesk 424j93e örû
elterjedése miatt a különbségek már némelyest elhalványulni látszanak, de még
mindig nagy odafigyelés szükséges egy olyan program megírásánál, amelyet
hardvertõl függetlenné szeretnénk tenni.
A grafikus képernyõn rasztergrafikát használhatunk, ami azt jelenti,
hogy a megjelenõ kép képpontokból (pixel) épül fel. A felbontás megmutatja,
hogy a kép vízszintes és függõleges irányban hány képpontból épül fel. A
különbözõ képernyõtipusok felbontása különbözõ lehet.
Grafikus felbontások képernyõtipusok szerint:
Monitortipus |
Felbontás |
Színek száma |
Vezérlôprogram |
Hercules |
720x348 |
|
HERC.BGI |
CGA |
640x200 |
|
CGA.BGI |
320x200 |
|
||
EGA |
640x350 |
|
EGAVGA.BGI |
VGA |
640x480 |
|
EGAVGA.BGI |
IBM8514 |
640x480 |
|
IBM8514.BGI |
PC3270 |
720x350 |
|
PC3270.BGI |
A grafikus képernyõ kezeléséhez ismernünk kell a grafikus képernyõn alkalmazott koordináta rendszert is. A koordináta rendszer hasonló a szöveges képernyõhöz, az alapértelmezés szerinti origo (kiindulópont) a képernyõ bal felsõ sarkában van. Eltérés azonban a szöveges képernyõhöz képest, hogy míg karakteres felületen a bal felsõ sarok koordinátái (1;1) voltak, grafikus felületnél a (0;0) koordinátájú pont lesz az origo. A bal alsó sarok koordinátái is eltérõek a szöveges felülethez képest, a felbontás értékénél eggyel kisebb lesz a maximális érték. Egy példán keresztül szemléltetve egy VGA képernyõ esetében a bal felsõ sarok koordinátái: (0,0); míg a jobb alsó sarok koordinátái: (639,479) lesznek.
A Turbo Pascal feljleszõi környezet a
fenti képernyõtipusokhoz beépített vezérlõmodulokat tartalmaz.
Ezek az állományok a BGI könyvtárban találhatók, kiterjesztésük .BGI. Ezek a
modulok (vezérlõprogramok) hivatottak elfedni a különbözõ hardver
eszközök sajátosságait, és egységes felületet biztosítani a kompatibilis
eszközök kezelése során (egy S3 Trio 64 V+ és egy EGA vezérlõ ugyanazt a
vezérlõprogramot használja, az EGAVGA.BGI állományt). A Pascal programok
tehát egy egységes felületen keresztül kezelik a grafikus képernyõt.
A grafika használatához szükséges, hogy a programok elérjék a grafikus
vezérlõprogramot (.BGI) és a Graph unit-ot (GRAPH.TPU), amely a grafikus
felület kezeléséhez szükséges eljásokat, függvényeket, konstanokat tartalmazza.
A grafikus felületet használó Pascal programokban tehát meg kell hívni a Graph
unit-ot a Uses Graph; utasítás segítségével. Azonban - a szöveges móddal
ellentétben - ez még nem elegendõ a grafikus képernyõ
használatához: mivel a monitor alapértelmezett üzemmódja a szöveges üzemmód, a
programban kell elhelyezni a grafikus módot inicializáló utasítás(oka)t
(InitGraph), csak ezután kezdhetjük el a grafikus felületen végzett munkát. A
program végén nagyon ajánlott a grafikus üzemmódból visszaváltani szöveges
üzemmódba a CloseGraph eljárás segítségével.
A Graph unit lehetõségeinek áttekintése:
A Graph unit igen sok (több, mint 70)
eljárást, függvényt tartalmaz a grafikus felület kezeléséhez, emellett igen sok
beépített konstans is rendelkezésünkre áll. Az eljárásokat, függvényeket hét
csoportba sorolhatjuk:
- a grafikus rendszer vezérlése
- rajzolás és festés
- képernyõ és ablakkezelés
- szövegek kezelése
- színek kezelése
- hibakezelés
- grafikus információk lekérdezése
A Graph unit beépített konstansai:
Itt csak az általánosan használt konstansok ismertetésére szorítkoznék, ami az egyes eljárásoknál speciális és fontos azt ott fogom megemlíteni.
A beépített konstansok egy fontos csoportja a színeket deklaráló konstans értékek. Megegyeznek a CRT unit esetében tárgyalt elnevezésekkel és értékekkel, tehát a BLACK=0 az elsõ, a WHITE=15 az utolsó használható szín. Néhány képernyõtípus azonban nem képes mind a 16 színt kezelni, ezért a Graph unit hozzáadott még egy konstans értéket a CRT unitnál megismertekhez, ez a MAXCOLOR nevet viseli, és az adott képernyõn megjeleníthetõ legnagyobb színértéket jelenti.
A másik fontos csoport a hibakódokhoz tartozó
konstans értékek csoportja, ezek alapján tudjuk kideríteni, milyen hiba lépett
fel a program futása során. Ezek leírása részletesen megtalálható a Turbo
Pascal Help-ben, most csak a fontosabbakat emítem:
grOK=0 - nincs hiba
grNoInitGraph=-1 - nem hívtuk meg az InitGraph eljárást, vagy az sikertelenül
fejezõdött be
grFileNotFound=-3 - nem található a .BGI állomány
grError=-11 - grafikus hiba (hardware)
grIOError=-12 - grafikus I/O hiba (hardware)
A Graph unit eljárásai, függvényei:
A grafikus rendszer vezérlése:
InitGraph
eljárás:
A grafikus képernyõ inicializálása, átváltás szöveges módról grafikus
módra. Szintaxisa: InitGraph(GD, GM, Utvonal);
GD: Integer - változó vagy konstans, amely tartalmazza a grafikus
vezérlõ (képernyõ) tipusát.
GM: Integer - változó vagy konstans, amely tartalmazza a grafikus üzemmódra
jellemzõ értéket (lásd késõbb)
Utvonal: String - változó vagy konstans, amely tartamazza a BGI állomány
elérési útvonalát.
Az InitGraph eljárás számára meghatározhatjuk
a képernyõtipust (GD paraméter) konstansként is, de ez nem tanácsos. Ha
a képernyõtípust konstansként adjuk meg, akkor programunk máris elveszti
hordozhatóságát, mivel minden más képernyõtipus esetén hibaüzenettel
leáll. Egy gyakran alkalmazott lehetõség, hogy az InitGraph eljárással
kiderítjük a képernyõ tipusát. Ha ezzel a lehetõséggel szeretnénk
élni, akkor a GD változónak a DETECT értéket kell adni az InitGraph hívása
elõtt (példa késõbb).
A különbözõ képernyõtipusok felülrõl kompatibilisek
egymással, tehát egy VGA monitoron minden gond nélkül alkalmazhatjuk a CGA
monitorokra jellemzõ felbontást. Azt, hogy a képernyõnkön milyen
felbontást szerenénk alkalmazni, az InitGraph második paramétere (GM) határozza
meg.
A harmadik paraméter nagyon fontos. Meg kell határozni az InitGraph számára,
hogy melyik meghajtón, milyen könyvtárban keresse a BGI kiterjesztésû
állományokat.
A példában olyan módon hívjuk meg az InitGraph eljárást, hogy bármilyen grafikus vezérlõt képes legyen inicializálni:
Uses Graph;
Var GD, GM: Integer;
Begin
GD:= DETECT;
InitGraph(GD, GM, 'C:\TP\BGI');
....
CloseGraph;
End.
Ha a GM változónak nem határozzuk meg az értékét, az InitGraph automatikusan a képernyõn használható maximális felbontást fogja alkalmazni.
DetectGraph
eljárás:
A grafikus vezérlõ felderítése. Szintaxisa: DetectGraph(GD, GM);
Egyenértékû az InitGraph eljárás alkalmazásával GD:= DETECT paraméter
mellett. Az eljárás meghívása után a GD és GM változók értéke a grafikus
hardvernek megfelelõen be lesz állítva, tehát a paraméterek csak
változók lehetnek. Akkor célszerû alkalmazni, ha a program futását
szeretnénk a hardvertõl függõvé tenni. Példa: Ha a gépen nem VGA
vezérlõt találunk, akkor hibaüzenettel kilépünk a programból.
Uses Graph;
Var GD, GM: Integer;
Begin
DetectGraph(GD, GM);
If GD<VGA
then Begin
Writeln('A program futtatasahoz VGA vezerlore van szukseg.');
Halt;
End;
InitGraph(GD, GM, 'C:\TP\BGI');
...
CloseGraph;
End.
CloseGraph
eljárás:
A grafikus mód lezárása. Szintaxisa: CloseGraph;
Az eljárás segítségével befejezhetjük a grafikus mód használatát és
visszatéhetünk szöveges üzemmódba. Mivel a szöveges üzemmód az alapértelmezett,
ezt az eljárást tanácsos minden grafikus program végén meghívni.
Rajzolás és festés:
Circle
eljárás:
Kör rajzolása. Szintaxisa: Circle(X, Y, Radius);
X, Y: Integer; - A kör középpontja
Radius: Word; - A kör sugara
Az eljárás egy teljes kört rajzol, melynek középpontját X,Y, sugarát Radius
határozza meg. Mindhárom paraméter lehet konstans és változó egyaránt.
Ellipse
eljárás:
Ellipszisív rajzolása. Szintaxisa: Ellipse(X, Y, KSzog, VSzog, RX, RY);
X, Y: Integer; - Az ellipszis középpontja
KSzog, VSzog: Word; - Az ellipszisív kezdõ és végszöge
RX, RY: Word; - A vízszintes és a függõleges sugár
Bármely paraméter lehet változó és konstans egyaránt. A szögek értékét fokokban
kell megadni. A grafikus képernyõn a szögek értelmezése a
következõképpen történik:
Ha a teljes kört egy órához hasonlítjuk: 0 fok - 3 óra; 90 fok - 6 óra; 180 fok
- 9 óra; 270 fok - 12 óra; 360 fok - 3 óra. Tehát a szögek az óramutató
járásával ellentétes irányban növekednek. Figyelni kell arra, hogy a
szögfüggvények radiánban, a rajzoló eljárások fokban értelmezik a megadott
szögeket.
GetX,
GetY függvény:
A grafikus kurzor koordinátáinak lekérdezése. Szitnaxisa: X:= GetX; vagy Y:=
GetY;
Ez a két paraméter nélküli függvény lekérdezi és visszaadja a grafikus kurzor
(aktuális képpont) koordinátáit. Visszatérési értékük Integer tipusú. A
grafikus kurzor a képernyõn nem látható.
Line
eljárás:
Szakasz (egyenes) rajzolása. Szintaxisa: Line(X1, Y1, X2, Y2);
X1, Y1: Integer; - A szakasz kezdõpontjának koordinátái
X2, Y2: Integer; - A szakasz végpontjának koordinátái
Az eljárás a koordinátapárok között rajzol egy egyenest (szakaszt). A
paraméterek egyaránt lehetnek változók és konstansok. A koordináták abszolút
koordináták.
LineRel
eljárás:
Szakasz rajzolása az aktuális pontból, relatív koordinátákkal. Szintaxisa:
LineRel(RX, RY);
RX, RY: Integer; - A szakasz végpontjának relatív koordinátái vízszintsen és
függõlegesen.
Az eljárás az aktuális pontból (ahol a grafikus kurzor áll) egy egyenest
rajzol, amelynek végpontját a relatív koordináták határozzák meg. Tehát a
végpont koordinátái mindig annak függvényében kerülnek megállapításra, hogy hol
áll a grafikus kurzor. Az eljárás a grafikus kurzort áthelyezi az RX, RY által
meghatározott pontba. Példa: A Feladatok lapon Grafikus programok: Rajzoljunk
szabályos hatszöget.
LineTo
eljárás:
Szakasz rajzolása az aktuális pontból, abszolút koordinátákkal. Szintaxisa:
LineTo(X, Y);
X, Y: Integer; - A szakasz végpontjának abszolút koordinátái.
Az eljárás az aktuális pontból egy egyenest rajzol, amelynek végpontja az X,Y
által meghatározott pont. A végpont helyzetét a paraméterek abszolút pontként
határozzák meg, tehát az aktuális pozíció (grafikus kurzor koordinátái) csak a
szakasz hosszát befolyásolja. Az eljárás a grafikus kurzort áthelyezi az X,Y
pontba.
MoveRel
eljárás:
Az aktuális képpont (grafikus kurzor) mozgatása relatív koordinátákkal.
Szintaxisa: MoveRel(RX, RY);
RX, RY: Integer; - A relatív koordináták vízsztintes és függõleges
irányban
MoveTo
eljárás:
Az aktuális képpont (grafikus kurzor) mozgatása abszolút koordinátákkal.
Szintaxisa: MoveTo(X, Y);
X, Y: Integer; - Az abszolút koordináták vízszintes és függõleges
irányban
Példa: Rajzoljunk egy egyenlõ szárú
háromszöget.
Uses Graph, CRT;
Var GD, GM: Integer;
Begin
DetectGraph(GD, GM);
InitGraph(GD, GM, 'C:\TP\BGI');
MoveTo(GetMaxX div 2, 20);
LineRel(-50, 120);
MoveRel(50, -120);
LineRel(50, 120);
LineRel(-100, 0);
Repeat Until Keypressed;
CloseGraph;
End.
Rectangle
eljárás:
Téglalap rajzolása. Szintaxisa: Rectangle(X1, Y1, X2, Y2);
X1, Y1, X2, Y2: Integer; - A téglalap sarkainak koordinátái.
A koordinátákra semmilyen megkötés nem vonatkozik, tehát nem állnak egymással
kapcsolatban. A következõ két eljárás egyaránt helyesen mûködik:
Rectangle(100, 100, 400, 250);
Rectangle(420, 270, 120, 120);
FillEllipse
eljárás:
Színnel kitöltött teljes ellipszis rajzolása. Szintaxisa: FillEllipse(X, Y, RX,
RY);
X, Y: Integer; - Az ellipszis középpontja
RX, RY: Word; - A vízszintes és a függõleges sugár
Az eljárás hasonlóan mûködik az Ellipse eljáráshoz, közöttük a különbség,
hogy a FillEllipse eljárás egy színnel kitöltött ellipszist rajzol. A kitöltés
színét a SetFillStyle eljárás alkalmazásával határozhatjuk meg (bõvebben
késõbb). Az eljárás csak teljes ellipszist tud rajzolni.
FloodFill
eljárás:
Terület kitöltése. Szintaxisa: FloodFill(X, Y, KSzin);
X,Y: Integer; - A kitöltendõ terület egy pontja
KSzin: Word; - A területet határoló vonal színe
A FloodFill eljárás kétféleképpen alkalmazható:
- Ha az X,Y paraméter által meghatározott pont egy - KSzin által meghatározott
színû kerettel - zárt alakzat belsejébe esik, akkor az alakzatot kitölti
a SetFillStyle által meghatározott kitöltési színnel.
- Ha az X,Y paraméter által meghatározott pont nem egy zárt alakzat területére
esik, akkor az eljárás a teljes képernyõt befesti a SetFillStyle eljárás
által meghatározott színnel - kivételt képeznek a festés alól azok a zárt
alakzatok, melyek KSzin által meghatározott színû kerettel határoltak.
Nézzünk két példát a fentiekre:
Program Pelda1; Begin SetFillStyle(SolidFill,
LightGreen); Readln; |
Program Pelda2; Begin SetFillStyle(SolidFill,
LightBlue); Readln; |
A Pelda1 programban a két téglalap közös részét töltjük ki világoszöld színnel, a Pelda2 programban a két téglalap fekete, a képernyõ többi része világoskék színû lesz.
PutPixel
eljárás:
Egy képpont kifestése adott színnel. Szintaxisa: PutPixel(X, Y, Szin);
X, Y: Integer; - A képpont koordinátái (konstans és változó egyaránt lehet a
paraméter)
Szin: Word; - A képpont színe (konstans és változó egyaránt lehet a paraméter)
GetPixel
függvény:
Egy képpont színének lekérdezése. Szintaxisa: Szin:= GetPixel(X, Y);
X, Y: Integer; - A képpont koordinátái (konstans és változó egyaránt lehet a
paraméter)
A függvény visszatérési értéke Word tipusú.
Pixelgrafikához tartozó példa a Feladatok
lapon található Grafikus programok közül a csigavonal rajzolása.
Hibakezelés:
GraphResult
függvény:
Grafikus hiba lekérdezése. Szintaxisa: E:= GraphResult;
A függvény visszatérési értéke Integer. Alkalmazása a DOS unitnál tárgyalt
DosError változóhoz hasonló. A $I direktíva kikapcsolt állapota mellett
lehetõséget biztosít a grafikus hibák saját eljárással történõ
lekezelésére.
Példa:
Uses Graph;
Var GD, GM: Integer;
Begin
GD:= DETECT;
InitGraph(GD, GM, '');
if GraphResult<0
then Begin
Writeln('Grafikus hiba...');
Halt;
End;
...
CloseGraph;
End.
GraphErrorMsg
függvény:
A függvény értéke a paraméterként megadott grafikus hibakódhoz tartozó angol
nyelvû hibaüzenet.
Szintaxisa: S:= GraphErrorMsg(HibaKod);
HibaKod: Integer; - a grafikus hiba kodja.
Példa:
Uses Graph;
Var GD, GM: Integer;
Begin
GD:= DETECT;
InitGraph(GD, GM, '');
if GraphResult<0
then Begin
Writeln(GraphErrorMsg(GraphResult));
Halt;
End;
...
CloseGraph;
End.
Képernyõ- és ablakkezelés:
ClearDevice
eljárás:
Ez a paraméter nélküli eljárás törli a grafikus képernyõt. Szintaxisa:
ClearDevice;
SetViewPort
eljárás:
Ablak definiálása a grafikus képernyõn. Szintaxisa: SetViewPort(X1, Y1,
X2, Y2, Clip);
X1, Y1: Integer; - Az ablak bal felsõ sarkának koordinátái
X2, Y2: Integer; - Az ablak jobb alsó sarkának koordinátái.
Clip: Boolean; - A vágás módjának meghatározása. False: nincs vágás, azaz a
rajz "kilóghat" az aktív grafikus ablakból, ha erre van
lehetõség. True: vágás az ablak határainál, azaz a rajz csak az ablak
határain belül lehet, ha ezen kívülre kerülne, akkor az ablak szélénél a rajz
vágásra kerül, tehát csak annyi látszik belõle, amennyi az ablakon
belülre esik.
Ha a grafikus ablakot újradefiniáljuk, az elõzõ ablak tartalma is
megmarad.
ClearViewPort
eljárás:
Az aktív grafikus ablak törlése (rajzok törlése az ablakból). Szintaxisa:
ClearViewPort;
Példa:
Uses Graph, CRT;
Var GD, GM: Integer;
S: String;
Begin
GD:= DETECT;
InitGraph(GD, GM, 'C:\TP\BGI');
SetFillStyle(SolidFill, LightGray);
Bar(0, 0, GetMaxX, GetMaxY);
SetViewPort(5, 5, GetMaxX-5, GetMaxY-5, False);
ClearViewPort;
SetFillStyle(SolidFill, RED);
FillEllipse(GetMaxX div 2, GetMaxY div 2, GetmaxX div 3, GetMaxY
div 4);
Repeat Until Keypressed;
CloseGraph;
End.
Színek kezelése:
SetColor
eljárás:
Az aktuális szín beállítása. Szintaxisa: SetColor(Szin);
Szin: Word; - a kívánt szín. Változó és konstans egyaránt lehet.
Az eljárás által beállított szín lesz az a szín, amelyet a rajzoló eljárások
használnak vonalak, körvonalak húzásához.
SetBkColor
eljárás:
Az aktuális háttérszín beállítása. Szintxisa: SetBkColor(Szin);
Szin: Word; - a kívánt szín. Változó és konstans egyaránt lehet.
Az eljárás beállítja az aktív grafikus ablak háttérszínét. A beállítás az
eljárás hívása után automatikusan megtörténik - szemben a CRT unit hasonló
eljárásával, ahol ehhez egy képernyõtörlésre volt szükség.
GetColor
függvény:
Az aktuális szín lekérdezése. Szintaxisa: Szin:= GetColor;
Szin: Word; - az aktuális szín.
GetBkColor
függvény:
Az aktuális háttérszín lekérdezése. Szintaxisa: Szin:= GetBkColor;
Szin: Word; - az aktuális háttérszín.
SetFillPattern
eljárás:
A kitöltési minta beállítása. Szintaxisa: SetFillPattern(Minta, Szin);
Minta: FillPatternType; - a kitöltési minta. Általában konstansként adjuk meg.
Szin: Word; - a minta színe.
A minta meghatározásakor általában a Graph unit elõre definiált
konstnsait használjuk, amelyek a következõk:
EmptyFill, SolidFill, LineFill, LtSlashFill, SlashFill, BkSlashFill, LtBkSlashFill,
HatchFill, XHatchFill, InterleaveFill, WideDotFill, CloseDotFill.
A szin meghatározása során a már megismert konstansokat alkalmazhatjuk.
Szöveg kiírása a képernyõre:
OutText
eljárás:
Szöveg kiírása az aktuális pontba (a grafikus kurzor pozíciójába). Szintaxisa:
OutText(S);
S: String; - a kiírandó szöveg.
OutTextXY eljárás:
Szöveg kiírása a képernyõ meghatározott pontjába. Szintaxisa:
OutTextXY(X, Y, S);
X, Y: Integer; - a szöveg pozíciója.
S: String; - a kiírandó szöveg.
Az eljárás - alapértelmezésben - a szöveg bal felsõ sarkát az X, Y által
meghatározott pontba igazítja.
SetTextStyle
eljárás:
A szöveg stílusának beállítása. Szintaxisa: SetTextStyle(BTip, Irany, Meret);
BTip: Word; - a betûtipust határozza meg. Általában konstans értéket
használunk, de lehet változó is.
Irany: Word; - a szöveg kiírásának irányát határozza meg, lehet vízszintes és
függõleges irányt használni.
Meret: CharSizeType; - a szöveg méretét határozza meg. Tulajdonképpen egy egész
szám, amely 1 és 10 közé esõ értéket vehet fel. Változó és konstans
egyaránt lehet.
A BTip paraméter lehetséges értékei: DefaultFont, TriplexFont, SmallFont,
SansSerifFont, GothicFont.
Az Irany paraméter lehetséges értékei: HorizDir - vízszintes felirat; VertDir -
függõleges felirat.
TextWidth
függvény:
A szöveg szélességét határozza meg pixelekben, figyelembe véve a beállított
szövegstílust. Szintaxisa: N:= TextWidth(S);
S: String; - a szöveg.
Visszatérési értéke Word;
TextHeight
függvény:
A szöveg magasságát határozza meg pixelekben, figyelembe véve a beállított
szövegstílust. Szintaxisa: N:= TextHeight(S);
S: String; - a szöveg.
Visszatérési értéke Word;
A fenti eljárások, függvények alkalmazására
példa a Feladatok lapon található az Alprogramok használatánál (3-as feladat).
Grafikus információk lekérdezése:
GetX
függvény:
Az aktuális képpont (grafikus kurzor) vízszintes koordinátájának lekérdezése.
Szintaxisa: X:= GetX;
Visszatérési értéke Integer;
GetY
függvény:
Az aktuális képpont (grafikus kurzor) függõleges koordinátájának
lekérdezése. Szintaxisa: Y:= GetY;
Visszatérési értéke Integer;
GetMaxX:
A grafikus képernyõ vízszintesen utolsó pontjának lekérdezése (a
grafikus képernyõ szélességének lekérdezése).
Szintaxisa: Szel:= GetMaxX;
Visszatérési értéke Integer;
GetMaxY:
A grafikus képernyõ függõlegesen utolsó pontjának lekérdezése (a
grafikus képernyõ magasságának lekérdezése).
Szintaxisa: Mag:= GetMaxY;
Visszatérési értéke Integer;
A grafikus információk lekérdezésére igen nagy szükségünk van, amikor grafikus hardvertõl független programot szeretnénk írni. Az alábbi példaprogram VGA képernyõre van optimalizálva, de mûködik minden más képernyõtipus esetén is.
uses Graph, CRT;
var GD, GM: Integer;
I: Word;
C: Word;
N, M: Byte;
begin
GD:= DETECT;
InitGraph(GD, GM, 'C:\TP\BGI');
I:= 0;
C:= 0;
M:= GetMaxY div 5;
Repeat
SetColor(C);
For N:= (GetMaxX div 5) downto (GetMaxX
div 6)
do begin
M:= N div 2;
Ellipse(GetMaxX div 2, GetMaxY div 2, I*15, (I+1)*15, N, M);
end;
Inc(I);
Inc(C);
if C=GetMaxColor-1
then C:=
GetMaxColor-(GetMaxColor-1);
Until I=360;
Repeat Until Keypressed;
CloseGraph;
end.
Találat: 1527