MODUŁ GRAPH
Inicjowanie trybu graficznego w programie odbywa się w następujący sposób: uses graph;
var
ster, tryb : integer; begin
ster := detect;
initgraph (ster, tryb, 'ścieżka do sterownika karty graficznej');
cleardevice;
closegraph end.
Podczas pracy z modułem graficznym istnieje także możliwość przełączania trybu graficznego na tryb tekstowy i odwrotnie. Służą do tego procedury RestoreCrtMode, SetGraphMode (tryb). Ta ostatnia może być używana do zmiany trybów graficznych pracy ekranu niezależnie od procedury RestoreCrtMode. Ekran w trybie graficznym posiada inny układ współrzędnych niż w trybie tekstowym. Każdy punkt ekranu posiada swoje współrzędne, przy czym punkt znajdujący się w górnym lewym narożniku oznaczany jest jako punkt (O, 0) a w dolnym prawym narożniku jako punkt (639, 349) - są to współrzędne dla karty EGA w trybie wysokiej rozdzielczości.
(0,0)
(639, 479)
Funkcje i procedury organizacyjne
1. Do obsługi błędów podczas wykonywania operacji graficznych.
• GraphResult
• GraphErrorMsg ( kod_błędu )
Np.
blad := GraphResult; if blad <> grOK then begin
Writeln ('Błąd grafiki: ', blad , '-', GraphErrorMsg ( Blad )); Halt (1); end;
2. Do uzyskania informacji o bieżących parametrach trybu graficznego
• GetGraphMode » GetX
• GetDriverName . GetY
• GetMaxMode . GetPixeł (x, y)
• GetModeName (numertrybu ) . GetBkColor
• GetMaxX . GetCołor
• GetMaxY
Np. x := GetMaxX div 2 y :=GetMaxYdiv2 punkt (x, y ) jest środkiem ekranu
3. Do ustalenia rozmiarów i usytuowanie bieżącego okna na ekranie
• SetYiewPort ( xl, yl, x2, y2, obcięcie )
gdzie argument - obcięcie jest typu Boolean - ClipOn lub ClipOff
4. Do pracy z grafiką wielostronicową przy konstrukcji obrazów animowanych
• SetActivePage ( strona ) skierowanie elementu graficznego na określoną
stronę przed jego konstukcją
• SetYisualPage ( strona) wyświetlenie danej strony na ekranie
5. Do zainstalowania własnych sterowników kart graficznych
• InstallUserDriver (nazwa sterownika, wskaźnik_autodetekcji)
Np. sterownik := InstallUserDriver ('YESA16.BGI', nil)
6. Do zainstalowania zbioru z krojem nowego pisma
(kroje o numerach od 5 do 10 nie muszą być instalowane )
• InstallUserFont (nazwa_kroju )
Np. Kroj := InstallUserFont (' EURO.CHR ');
• SetTextStyłe (krój, HorizDir, l );
7. Do oczyszczania okna graficznego
• ClearDevice oczyszczenie wszystkich stron ekranu i przywrócenie
standardowych wartości
• ClearYiewPort oczyszczanie bieżącego okna graficznego
Procedury ustalające parametry graficzne
1. Zmiany barw w palecie kolorów
• SetAllPalette (paleta)
• SetPalette (numer_koloru, kolor)
• SetRGBPalette (numer_koloru, czewony, zielony, niebieski)
2. Ustalenie koloru rysowanych linii i koloru tlą ekranu
• SetColor (kolor)
• SetBkColor (kolor)
3. Ustalenie rodzaju bieżącej linii i jej grubości
• SetLineStyle (rodzaj_linii, wzór, grubość)
wzór = O gdy rodzaj linii (0..3)
wzór podajemy szesnastkowo np. $CCFO gdy rodzaj linii = 4 (UserBitLn)
4. Ustalenie rodzaju i koloru wypełniania zamkniętych konturów
• SetFillStyle (wzór, kolor)
• SetFillPattern (wzór_zdefiniowany, kolor) matryca 8-bitowa
5. Ustalenie sposobu rysowania linii w procedurach DrawPoly, Linę,
• LineRel, LineTo, Rectangle
• SetWriteMode (trybjrysowania)
tryb predefiniowany: CopyPut lub XORPut
6. Przesunięcie kursora do punktu o współrzędnych (x, y)
• MoveTo (x, y)
• MoveRel (Dx,Dy)
Przegląd procedur graficznych;
1. Rysowanie odcinków prostych
Line(xl.yl,x2,y2) LineRel (Dx, Dy) LineTo (x, y)
2. Zaznaczenie punktu na ekranie
PutPixel (x, y kolor)
3. Obraz prostokąta i okręgu w bieżącym oknie narysowany ustalonymrodzajem linii i kolorem
Rectangle (x l ,y l ,x2 ,y 2) Circle (x,y,r)
4. Rysowanie wielokątów
DrawPoly (liczba_punktów, wspólrzędne_punktów)
Np. DrawPoly (4,trojkat) gdzie const
trójkąt :array [1..4] of PointType =((x:10;y:10),(x:15; y: 100),
(x:150;y:50),(x:10;y:10));
5. Rysowanie łuków okręgów i elipsArc (x, y, a, b, r)
Ellipse (x, y, a,b, xr, yr) Np.
Arc (150,100,0,90,50) - łuk okręgu o śr.w pkcie (150,100) i pr. 50 od kąta wodzącego O do 90
Ellipse (150,100, O, 360, 40, 50)-elipsa o śr. w pcie jak wyżej, osi poziomej 40 i osi pionowej 50
6. Rysowanie odpowiedniej figury z wypełnieniem jej aktualnie obowiązującym znakiem wypełniającym i kolorem
• Bar (xl, yl, x2, y2) - prostokąt wypełniony
Bar3d (xl,yl,x2,y2, głębokość, wierzchołek) TopOn-true, TopOff -false
FillPoly (liczba_punktów, współrzędne_punktów) - wielokąt wypehiiony
PieSlice (x, y, a, b, r) - wycinek koła
FillEllipse (x, y, półoś-x, półoś-y)
Sector (x, y, a, b, r, półoś-x, półoś-y) - wycinek elipsy
7. Wypełnienie dowolnego zamkniętego konturu
• FloodFill (x, y, brzeg) - punkt (x, y) określa który kontur ma być wypełniony
SetColor (red);
Arc(160, 100, 0,180, 50);
Line (l 10, 100, 210,100); SetFillStyle (SolidFill, Yellow); FloodFill (160,101,red)
Funkcje i procedury tekstowe
1. Określenie rodzaju kroju pisma, kierunku wyprowadzania (poziomo lub pionowo) oraz rozmiaru
• SetTextStyle (krój, kierunek, rozmiar)...
pull