online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

A Graph unit fontosabb beépített konstansai, függvényei, eljarasai; hasznalata

számítógépes



felso sarok

egyéb tételek

jobb felso sarok
 
Prezentaciós eszközök
IP labor A ping parancs végrehajtasi üzeneteinek elfogasa
Mi fan terem a prezentació?
Kapcsolódas az internethez
ÚJABB HARDVER- ÉS SZOFTVERMEGOLDÁSOK
Kapcsolat az ügyfél szolgalattal
Egyéb internetes szolgaltatasok
Egyszerű web szerver készítése
Elemi programozasi tétele XI.: rendezés buborékos módszerrel
A NOVELL NetWare halózati operaciós rendszerek
 
bal also sarok   jobb also sarok

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; 
Uses Graph; 
Var GD, GM: Integer; 

Begin 
   GD:= DETECT; 
   InitGraph(GD, GM, 'C:\TP\BGI'); 

   SetFillStyle(SolidFill, LightGreen); 
   SetColor(Red); 
   Rectangle(100, 100, 400, 250); 
   Rectangle(420, 270, 120, 120); 
   FloodFill(121, 121, Red); 

   Readln; 
   CloseGraph; 
End. 

Program Pelda2; 
Uses Graph; 
Var GD, GM: Integer; 

Begin 
   GD:= DETECT; 
   InitGraph(GD, GM, 'C:\TP\BGI'); 

   SetFillStyle(SolidFill, LightBlue); 
   SetColor(Red); 
   Rectangle(100, 100, 400, 250); 
   Rectangle(420, 270, 120, 120); 
   FloodFill(10, 10, Red); 

   Readln; 
   CloseGraph; 
End. 

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


Felhasználási feltételek