Lekcja 6 - Podstawy obsługi grafiki

Procedura: InitGraph, CloseGraph





Procedura: InitGraph  służy do włączania trybu graficznego. Przykład w postaci programu:

program grafika;
uses GRAPH;
var sterownik, tryb : integer;
begin
karta:=0;
tryb:=0;
InitGraph(sterownik, tryb, 'C:\tp\Bgi');
end.

W sekcji uses deklarujemy moduł Graph, czyli moduł graficzny, oraz 2 zmienne: sterownik karty graficznej i tryb.
Na początku prgramu 2 zmiennym przypisujemy wartość = 0. Dzięki temu Pascal sam rozpozna typ naszej karty itp.
W poleceniu InitGraph po 2 zmiennych wpisujemy ścieżkę do zbioru Bgi, czyli twoją ścieżkę do katalogu z Pascalem i do katalogu Bgi.
U mnie jest to: C:\tp\Bgi

Procedura: CloseGraph  zamyka tryb graficzny.

program grafika;
uses GRAPH;
var sterownik, tryb : integer;
begin
karta:=0; {zamiast przypisywać zmiennym (karta, tryb) wartości 0 możesz również napisać: DetectGraph(karta, tryb);}
tryb:=0;
InitGraph(sterownik, tryb, 'C:\tp\Bgi');
CloseGraph;
end.

Ten program otwiera i zamyka tryb graficzny.




Procedura: SetColor, SetBkColor, SetFillStyle



Musisz zauważyć, że w module graficznym nie działają polecenia takie jak: Writeln, instrukcje warunkowe itp.
Moduł graficzny ma swoje oddzielne instrukcje, jedną z niech jest instrukcja SetColor .
Zmienia kolor w trybie graficznym (procedura: TextColor w trybie graficznym nie działa!)Kolorem który podamy w tej procedurze zostaną wyświetlone np. kółka, linie czy kwadraty.


Procedura SetBkColor  zmienia kolor tła w trybie graficznym. Po prostu piszesz: SetBkColor i w nawiasie numer lub nazwę koloru.


Teraz procedura: Procedura SetFillStyle .
Zmienia ona rodzaj i kolor wypełnienia konturów wykorzystywanych przez niektóre procedury. Domyślne ustawienia początkowe to wzorzec wypełniania ciągłego i numer koloru będący maksymalnym kolorem aktualnego trybu graficznego. Rodzaje wzorca to:

EmptyFill = 0      > wypełnienie kolorem tła
SolidFill = 1     > wypełnienie ciągłe
LineFill = 2     > wypełnienie pogrubionymi liniami poziomymi
LtSlashFill = 3      > wypełnienie liniami pochyłymi w prawo
SlashFill = 4      > wypełnienie pogrubionymi liniami pochyłymi w prawo
BkSlashFill = 5      > wypełnienie pogrubionymi liniami pochyłymi w lewo
LtBkSlashFill = 6      > wypełnienie liniami pochyłymi w lewo
HatchFill = 7      > wypełnienie siatką pionową
xHatchFill = 8      > wypełnienie siatką ukośną
InteerleaveFill = 9     > wypełnienie liniami splecionymi
VideDotFill = 10      > wypełnienie kropkami
CloseDotFill = 11      > wypełnienie zagęszczonymi kropkami
UserFill = 12     > wypełnienie wzorem zdefiniowanym przez użytkownika procedurą SetFillPattern



Procedura: SetLineStyle, Line, Circle, Rectangle, FloodFill



Procedura SetLineStyle  zmienia rodzaj i grubość linii używane przy procedurach: Bar3D, Line, Circle. Dostępne rodzaje to:

SolidLn = 0 - ciągła
DottedLn = 1 - kropkowana
CenterLn = 2 - symetryczna
DashedLn = 3 - przerywana
UserBitLn = 4 - o wzorze zdefiniowanym przez użytkownika

Rodzaje grubości linii to:
NormWidth = 1 - linia normalna
ThickWidth = 3 - linia pogrubiona

Więcej o tej procedurze dowiesz się w praktyce :)

Procedura Line :
Składnia: Line(X1, Y1, X2, Y2 : integer);
Rysuje linię, która zaczyna się w punkcie X1, Y1 a kończy się w punkcie X2, Y2.
Kolor tej linii możemy określić przy pomocy procedury SetColor.
Teraz czas na przykład w postaci programu:
program Modul_graph;
uses  graph, crt;
Var sterownik, tryb : integer;
begin
sterownik:=0;
tryb:=0;
InitGraph(sterownik, tryb, 'C:\tp\Bgi');
Line(100, 100, 600, 600);
Repeat Until Keypressed;
CloseGraph;
end.

Efektem wykonania programu będzie narysowanie linii o początku w punkcie 100, 100 i końcu w punkcie: 600, 600
Pamiętaj aby polecenie Repeat Until Keypressed wpisać przed zamknięciem ekranu graficznego,
ponieważ nie zobaczysz efektu wykonania programu, jeżeli procedurę tą napiszesz po słowach: CloseGrahp
wtedy ekran graficzny zostanie zamknięty i ujżysz czysty ekran tekstowy.

Procedura: Circle 
Rysuje koło o środku o współrzędnych X, Y, promieniu R i kolorze określonym przez procedurę SetColor.
Oto przykład:

program kolo;
uses Graph, Crt;
var tryb, karta : Integer;
begin
karta:=0;
tryb:=0;
InitGraph(tryb, karta, 'C:\tp\Bgi')
SetColor(14);
Circle(250, 250, 100);
repeat until keypressed;
CloseGraph; end.

Efektem wykoniania programu będzie narysowanie koła o środku o współrzędnych 250, 250 i promieniu: 100.

Procedura: Rectangle 
Procedura ta rysuje prostokąt. Jej składnia to:
Rectangle (X1, Y1, X2, Y2 : Integer);  gdzie X1, Y1 to współrzędne lewego górnego rogu a X2 i Y2 to współrzędne prawego dolnego rogu.
Przykład:

program prostokat;
uses Graph, Crt;
var tryb, karta : Integer;
begin
karta:=0;
tryb:=0;
InitGraph(tryb, karta, 'C:\tp\Bgi')
SetColor(4);
Rectangle(100, 100, 500, 250);
repeat until keypressed;
CloseGraph; end.

Na pewno wiesz o co chodzi :)

Procedura: FloodFill
Składnia tej procedury jest taka: FloodFill(X, Y : Integer; kolorgranicy : Word);
Procedura wypełania kolorem i wzorem podanym w procedurze SetFillStyle obszar o "kolorzegranicy"
(patrz składnia). Jeżeli przy wypełanianiu napotka linię, np. linię wykonaną kolorem granicy to zatrzymuje proces wypełaniania
Punkt X, Y jest miejscem od którego procedura zaczyna wypełnianie.
Oto przykład:

program floodfill;
uses graph, Crt;
var
tryb, karta : Integer;
begin
tryb:=0;
karta:=0;
InitGraph(karta, tryb, 'C:\tp\Bgi');
SetColor(green);
Rectangle(50, 50, 120, 120);
Rectangle(10, 10, 100, 100);
SetFillStyle(XHatchFill, GetMaxColor);
FloodFill(50, 50, Green);
Repeat Until Keypressed;
CloseGraph;
end.

Myślę, że jeden program Ci nie wystarczy, dlatego pobaw się tą procedurą ay ją lepiej zrozumieć.



Procedura: Bar, Bar3D, PutPixel, OutTextXY, ClearDevice



Procedura: Bar rysuje wypełniony prostokąt. Jej składnia to: Bar(X1, Y1, X2, Y2), gdzie X1,Y1 to współrzędne lewego górnego rogu, a X2,Y2 to współrzędne prawego dolnego rogu.
Kolor ramki jest określany przez procedurę SetColor, a kolor wypełnienia przez procedurę SetFillStyle.

Procedura: Bar3D rysuje trójwymiarowy prostokąt wypełniony. Jej składnia to: Bar3D(X1, Y1, X2, Y2; B; TOP)
X1,Y1 to współrzędne lewego górnego rogu przedniej ścianki, X2,Y2 to współrzędne lewego dolnego rogu
przedniej ścianki, zmienna B jest to głębokość naszego prostopadłościanu, zmienna TOP określa czy
górna powierzchnia jest widoczna TRUE czy niewidoczna FALSE

Procedura: PutPixel wyświatla jeden punkt o podanych współrzędnych (X, Y)i podanym kolorze. Jej składnia to: PutPixel (X, Y; Kolor)

Teraz  procedura: OutTextXY , wyświetla ona na ekranie monitora tekst określony przez zmienną S rozpoczynając od współrzędnych X, Y. Kolor tekstu podawany jest przez procedurę SetColor.
np. aby wypisać tekst na ekranie robimy tak:

- uruchamiamy moduł graficzny
- wpisujemy: OutTextXY(200,100,'Cześć to ja - Jerzy!');

Efektem programu będzie wypisanie tekstu: Cześć to ja - Jerzy! o początku w punkcie 200 i 100.
Tekst zostanie wypisany w kolorze określonym przez procedurę SetColor

Procedura: ClearDevice - procedura ta czyści ekran graficzny. Jak coś już narysujemy to nie możemy wyczyścić tego procedurą: ClrScr tylko ClearDevice



No to na razie cześć!


Wróć do strony głównej kursu