Naše dosavadní programování se odehrávalo v textovém režimu. Měli jsme k dispozici písmenka, řádky, sloupce a trochu těch tabulkových znaků. Teď tedy nastává chvíle, kdy si přibereme navíc čáry, čtverce, kružnice, elipsy a podobné elementy, souhrnně nazývané obchodní nebo vektorová grafika.
Pro práci s grafikou jsou potřeba následující věci:
Třetí podmínka vyplývá z toho, že v souboru EGAVGA.BGI jsou naprogramovány všechny grafické funkce a program si je odsud „bere”. Tento soubor by měl být vždy v adresáři s programem.
Příkazů pro práci s grafikou je mnoho. Proto je uvedu jen velmi stručně, spoléhaje na vrozenou inteligenci a zvídavost každého programátora.
PutPixel( X, Y, Barva ); | Nakreslí bod. |
GetPixel( X, Y, Barva ); | Vrátí barvu bodu na pozici [X, Y] |
SetColor( Barva ); | Nastaví barvu pro kreslení |
Line( X1, Y1, X2, Y2 ); | Čára z [X1,Y1] do [X2,Y2] |
MoveTo( X, Y ); | Přesun na pozici [X, Y] |
LineTo( X, Y ); | Čára do bodu [X, Y] |
LineRel( X, Y ); | Čára o [X, Y] bodů dál |
MoveRel( X, Y ); | Posun o [X, Y] bodů dál |
GetX; | Vrátí polohu na ose X |
GetY; | Vrátí polohu na ose Y |
OutText( Text ); | Vypíše na obrazovku text (string!) |
OutTextXY( X, Y, Text ); | Vypíše na obrazovku text (string!) |
Bar( X1, Y1, X2, Y2 ); | Obdélník z [X1,Y1] do [X2,Y2] |
Circle( X, Y, Poloměr ); | Kružnice |
SetFillStyle(Vzorek, Barva); | Vzorek pro výplně |
ClearDevice; | Smaže obrazovku |
Samozřejmě, že příkazů je mnohem, mnohem víc.
Příklad:Opět jeden velmi jednoduchý příklad (a jeden úkol) — nakreslit mnoho barevných domečků [] na náhodných pozicích.
Program Domecek; { Nakreslí domečky v různých barvách } Uses CRT, Graph; Var gm, gd: Integer; i : Integer; Procedure Domek( Vel, Barva: Integer ); Begin SetColor( Barva ); LineRel( 0,-10*Vel ); LineRel( 10*Vel, 10*Vel ); LineRel(-10*Vel, 0 ); LineRel( 10*Vel,-10*Vel ); LineRel(-10*Vel, 0 ); LineRel( 5*Vel, -5*Vel ); LineRel( 5*Vel, 5*Vel ); LineRel( 0, 10*Vel ); MoveRel(-10*Vel,-10*Vel ); { Návrat na začátek kreslení } End; Begin DetectGraph( gd, gm ); { Příprava grafiky } InitGraph( gd, gm, '' ); { Nastartuje grafický režim } SetColor( 11 ); OutTextXY( (GetMaxX div 2)-20, 10, 'Domky' ); Line((GetMaxX div 2)-20,20,(GetMaxX div 2)+20, 20); Randomize; { Rozházet generátor náh. čísel } For i:=1 to 100 do Begin MoveTo(Random(GetMaxX-50),100+Random(GetMaxY-100)); { Přesun "kamsi doprostředka" } Domek( 3, Random( 15 )+1 ); { Náhodně barevný domeček } end; ReadLn; { Čekání na Enter } CloseGraph; { Smaže obrazovku a vypne grafiku } End.
A ten úkol? Nakreslit domečky s pomocí příkazu Bar.