kategória | ||||||||||
|
||||||||||
|
||
A grafikus rendszer jellemzői, paraméterei. Grafikus eljárások és függvények.
A
Pascal nyelv a képernyõt alapértelmezés szerint szöveges üzemmódban használja.
A grafikus üzemmódban megváltozik a képernyõ logikai szerkezete, a kép
bármely pontját kijelölhetjük. A grafikus mód alkalmazásához ismernünk kell a
monitor tulajdonságait, mint a vezérlõ típusa, a képfelbontás nagysága
és a kezelt színek száma. A kezelt színek száma szerint két monitortípust
különböztetünk meg: monokróm és színes. A képfelbontás azt jelzi, hogy
függõlegesen ill. vízszintesen hány kép- pontból áll a grafikus
képernyõ. Eze 646b17g k alapján a Pascal a következõ grafikus
vezérlõket támogatja*:
Vezérlõ típusa |
Felbontás |
Színek száma |
Grafikus meghajtó program |
Hercules
|
720x348 640x200 ill. 320x200 640x350 640x480 640x480 720x350 |
2 ill.4 |
HERC.bgi CGA.bgi EGAVGA.bgi EGAVGA.bgi IBM8514.bgi PC3270.bgi |
A grafikus mód üzemeltetéséhez szükség van a grafikus kártyának megfelelõ meghajtó programra és a Graph unitra.
program grafika;
uses graph;
var gd,gm:integer;
begin
gd:=Detect;
InitGraph(gd,gm,'');
if GraphResult<>GrOk then begin
Write('Grafikus hiba');
Halt(1);
end;
CloseGraph;
end.
A mintaprogram egy grafikus program általános felépítését mutatja be. Deklarálni kell a Graph unitot a uses kulcsszó után, valamint két integer típusú változót. A Detect függvény visszatérési értéke a grafikus kártya típusát határozza meg. Ezután kell beállítani a grafikus üzemmódot az InitGraph eljárással, melynek elsõ paramétere a grafikus kártya típusa, második a grafikus mód, harmadik pedig a meghajtó programot tartalmazó könyvtár útvonala. Ha útvonalként egy üres stringet adunk meg, akkor az aktuális könyvtárban keresi a meghajtó programot. Ha sikeres volt a grafikus módra való átállás, akkor a GraphResult függvény értéke a GrOk konstans értéke lesz. Ha minden rendben, akkor végrehajtódnak a programban szereplõ grafikus eljárások és függvények. A grafikus mód leállítása a CloseGraph paranccsal történik. Lehetõség van arra, hogy a program futása közben váltsunk a szöveges és grafikus megjelenítési módok között.
RestoreCrtMode;
SetGraphMode(GetGraphMode);
A RestoreCrtMode parancs a grafikus üzemmódból szövegesre állítja a képernyõt. A SetGraphMode eljárás a paraméterben megadott grafikus módba állítja a képernyõt. A GetGraphMode függvény az inicializáláskor beállított grafikus értékeket adja vissza.
Grafikus eljárások és függvények
A grafikus eljárásokkal és függvényekkel különbözõ grafikai elemeket
rajzolhatunk a képernyõre, grafikus mûveleteket végezhetünk (pl.
képernyõterület memóriába írása).
Grafikus kurzor pozícionálása
A grafikus kurzor a képernyõ aktuális pontjának koordinátáit jelöli.
GetX : integer A grafikus kurzor aktuális pozíciójának x koordinátája.
GetY : integer A grafikus kurzor aktuális pozíciójának y koordinátája.
GetMaxX : integer A képernyõ legnagyobb x koordinátája.
GetMaxY : integer A képernyõ legnagyobb y koordinátája.
MoveTo(x,y: integer); A grafikus kurzor pozícionálása az (x,y) pontra.
MoveRel(dx,dy:
integer);
A grafikus kurzor eltolása (dx,dy) koordinátákkal.
Képernyõablak
SetActivePage(Page: word); Kijelöli a képernyõ aktív lapját.
SetVisualPage(Page: word); Megjeleníti a megadott lapot.
ClearDevice; Letörli az aktív képernyõ tartalmát.
ClearViewPort; Letörli az aktuális ablak tartalmát.
SetViewPort(x1,y1,x2,y2: integer; Clip: boolean); Aktuális ablak kijelölése a képernyõn.
GetViewSettings(var ViewPort:
ViewPortType);
Aktuális ablak adatainak lekérdezése.
Pont
PutPixel(x,y: integer; Pixel: word); Pontot rajzol a megadott színnel.
GetPixel(x,y: integer):
word
Az (x,y) pont színe.
Vonal
Line(x1,y1,x2,y2: integer); Vonalat rajzol két pont között.
LineTo(x,y: integer); Vonalat húz az (x,y) pontba.
LineRel(dx,dy: integer); Vonalat húz a (dx,dy) távolságra lévõ pontba.
SetWriteMode(WriteMode: integer); Vonalrajzolás módjának beállítása.
SetLineStyle(LineStyle,Pattern,Width: word); Vonal típusának beállítása.
GetLineSettings(var LineInfo:
LineSettingsType);
Vonal adatainak lekérdezése.
Poligon
Rectangle(x1,y1,x2,y2: integer); Téglalapot rajzol.
Bar(x1,y1,x2,y2: integer); Kitöltött téglalapot rajzol.
Bar3D(x1,y1,x2,y2: integer; Depth: word; Top: boolean); Téglatestet rajzol adott mélységgel.
DrawPoly(NumPoints: word; var PolyPoints); Sokszöget rajzol.
FillPoly(NumPoints: word; var
PolyPoints);
Kitöltött sokszöget rajzol.
Kör, ellipszis
Circle(x,y: integer; Radius: word);
Kört rajzol (x,y) középponttal és adott sugárral.
Arc(x,y: integer; StAngle,EndAngle,Radius: word);
Körívet rajzol (x,y) középponttal a megadott kezdõszög és végszög között.
PieSlice(x,y: integer; StAngle,EndAngle,Radius: word);
Körcikket rajzol és kitölti.
Ellipse(x,y: integer; StAngle,EndAngle,XRadius,YRadius: word);
Ellipszis ívet rajzol.
FillEllipse(x,y: integer; XRadius,YRadius: word);
Teljes ellipszist rajzol és kitölti.
Sector(x,y: integer; StAngle,EndAngle,XRadius,YRadius: word);
Ellipszis cikket rajzol és kitölti.
GetArcCoords(var ArcCoords: ArcCoordsType);
Az utoljára rajzolt ív kezdõ- és végkoordinátáit adja vissza.
SetAspectRatio(xasp,yasp: word);
A beépített oldalarányok megváltoztatása.
GetAspectRatio(var xasp,yasp: word);
A beépített oldalarányok értékével tér vissza.
Kitöltés
FloodFill(x,y: integer; Border: word);
Az (x,y) ponttól kezdve kitölti a Borderben megadott színnel körbezárt területet.
SetFillStyle(Pattern,Color: word);
Beállítja a kitöltés mintáját és színét.
SetFillPattern(Pattern: FillPatternType; Color: word);
A felhasználó által definiált minta (8 byte) és szín beállítása.
GetFillPattern(var FillPattern: FillPatternType);
A felhasználó által definiált mintát és színt adja vissza.
GetFillSettings(var FillInfo: FillSettingsType);
Az aktuális kitöltés mintáját és színét
adja vissza.
Szín
SetBkColor(Color: word); Beállítja a háttér színét.
SetColor(Color: word); Beállítja a rajzolás színét.
GetBkColor(Color: word); Az aktuális háttérszínt adja vissza.
GetColor(Color: word); A rajzolás aktuális színét adja vissza.
SetAllPalette(var Palette:
PaletteType);
Az alappaletta színeinek beállítása.
SetPalette(ColorNum,Color:
word);
Adott szín sorszámának megváltoztatása.
GetPalette(var Palette: PaletteType); Az aktuális paletta értékeivel tér vissza.
GetPaletteSize: integer Az aktuális paletta méretével tér vissza.
GetMaxColor:
word
A maximálisan felhasználható színek száma.
Szöveg
OutText(TextString: string); Szöveget ír a képernyõre.
OutTextXY(x,y: integer; TextString: string); Szöveget ír a képernyõre (x,y) ponttól kezdve.
SetTextStyle(Font,Direction,CharSize: word); A betû típusának, méretének, és a kiírás irányának beállítása.
SetTextJustify(Horiz,Vert: word); A szöveg igazítása a kiírás kezdõpontjához.
GetTextSettings(var TextInfo: TextSettingsType); A szövegkiírás aktuális beállításait adja vissza.
TextHeight(TextString: string): word Betû magasságát adja vissza.
TextWidth(TextString: string):
word
Szöveg hosszát adja vissza.
Bittérkép
ImageSize(x1,y1,x2,y2: integer): word A képablak méretét adja vissza byte-ban.
GetImage(x1,y1,x2,y2: integer; var BitMap); A paraméterként megadott képablakot menti el a pufferbe.
PutImage(x,y: integer; var BitMap; BitBlt: word); A puffer tartalmát tölti be az (x,y) ponttól kezdve.
Találat: 1525