Turbo Pascal - Moduł standardowy GRAPH
Moduł Graph zawiera ponad 70 procedur i funkcji standardowych, obsługuje grafikę ekranową. Procededury i funkcje tego modułu pozwalają rysować na ekranie krzywe różnych kształtów i kolorów, wypełniać kontury określonym kolorem, a także wprowadzać na ekran napisy (poziomo i pionowo) w różnych krojach pisma, z możliwością ich zmniejszania i powiększania.Wykorzystanie standardowych procedur i funkcji modułu Graph wymaga jego deklaracji za pomocą słowa kluczowego uses. Przed wywołaniem pierwszej funkcji lub procedury graficznej moduł Graph powinien zostać zainicjowany przez wywołanie procedury InitGraph, która ładuje do pamięci i inicjuje odpowiedni sterownik.
Przykład:
InitGraph(karta,tryb,\'c:\TP\bgi\');
Na zakończenie wykonywania operacji graficznych, powinna być wywołana procedura CloseGraph, która powoduje usunięcie z pamięci sterownika i powrót do poprzedniego trybu.
Ekran w trybie graficznym posiada inny układ wspólrzędnych niż w trybie tekstowym. Każdy punkt tego ekranu posiada swoje współrzędne, przy czym punkt znajdujący się w lewym górnym narożniku oznaczony jest jako (0,0). Liczba punktów ekranu wzdłuż osi x i y zależy od monitora i obsługującej go karty graficznej.1. Predefiniowane identyfikatory modułu Graph
- stałe definiujące sterowniki
Jeden z parametrów procedury InitGraph definiuje sterownik obsługujący kartę graficzną.
- stałe trybów graficznych ekranu
Stałe te służą do oznaczania trybów graficznych ekranu wykorzystywanych przez moduł Graph. Poszczególne tryby są ściśle związane z rodzajem karty graficznej.
2. Procedury inicjujące i zamykające tryb graficzny
- procedura DetectGraph
Procedura ta służy do sprawdzenia sprzętu komputerowego i określenia właściwego dla niego sterownika, jak również graficznego trybu pracy ekranu.
DetectGraph (karta,tryb);
Oba argumenty wywołania muszą być zmiennymi typu Integer. Zmiennej karta zostanie przypisania wartość określająca sterownik do obsługi karty graficznej, zmiennej tryb - wartość określająca tryb graficzny wysokiej rozdzielczości.
Przykład
Program PR1;uses Graph;var karta,tryb : Integer;beginDetectGraph (karta,tryb);Writeln (\' karta = \', karta,\' tryb = \',tryb);readlnend.
- procedura InitGraph
InitGraph(karta,tryb,skorowidz);Trzeci argument wywołania procedury InitGraph jest łańcuchem określającym ścieżkę dostępu do katalogu, w którym znajduje się dany sterownik.Jeśli wartością zmiennej karta jest Detect (wartość zmiennej tryb może być dowolna) to wywołanie procedury powoduje automatyczny wybór sterownika i trybu pracy ekranu.
- procedura CloseGraph
Jest to procedura bezparametrowa, która służy do zakończenia pracy w trybie graficznym. Usuwa sterownik z pamięci operacyjnej komputera i powraca do poprzedniego trybu pracy ekranu.
Struktura typowego programu graficznego
Program nazwa;uses Graph;.....................................begin......................................InitGraph (argumenty);....................................CloseGraphend.
1. Inicjalizacja trybu graficznego2. Operacje trybu graficznego3. Zamknięcie trybu graficznegoAd. 1InitGraph (Sterownik: Integer, Tryb: Integer, Ścieżka: String);sterownik – identyfikator karty sterownika graficznego;tryb – tryb graficzny (rozdzielczość, ilość kolorów);ścieżka – katalog, w którym znajduje się sterownik *.bgiinicjalizuje tryb graficznyDetect/0;wykrywa kartę graficznąGraphResult: Integer;wynik zainicjowania trybu graficznego(jeśli jest grOk, to w porządku)Ad. 2Arc (X,Y; Integer; StAngle, EndAngle, Radius; Word);łuk, wycinek okręguBar (x1, y1, x2, y2: Integer);prostokąt, „słupek” – np. dla wykresów słupkowychBar3D (x1, y1, x2, y2: Integer; Depth: Word; Top: Boolean);słupek „trójwymiarowy”Circle (X,Y: Integer; Radius: Word);rysuje okrągClearDevice (X,Y: Integer; Radius: Word);czyszczenie ekranu graficznegoClearViewPort;czyszczenie okna (część ekranu), w trybie graficznymDetectGraph;sprawdza jaką kartę graficzną mamy do dyspozycji i w którym trybie graficznym właśnie pracujemyDrawPoly (NumPoints: Word; var PolyPoints);rysuje wielokątEllipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word);rysuje elipsęFillEllipse (X, Y: Integer; XRadius, YRadius: Word);rysuje elipsę wypełnioną wewnątrzFillPoly (NumPoints: Word; var PolyPoints);rysuje wielokąt wypełniony wewnątrzFloodFill (X, Y: Integer; Border: Word);wypełnia zamknięty (ograniczony liniami o innym kolorze) region ekranuwcześniej trzeba wypełnić kolor i wzór „wypełniacza”GetArcCoords (var ArcCoords: _ArcCoordsType_);podaje współrzędne ostatnio rysowanego łukuGetAspectRatio (var Xasp, Yasp: Word);zwraca współczynniki „skali rysunku” (aspect ratio); ponieważ proporcje rozdzielczości (w pikselach) po poziomej osi X i po pionowej osi Y są różne dla różnych kart graficznych, pozwala na skalowanie rysunkuGetBkColor: Word;podaje bieżący kolor tłaGetColor: Word;podaje bieżący kolor rysowaniaGetDefaultPalette (var Palette: PaletteType);ustawia domyślną paletę kolorówGetDriverName: String;podaje nazwę sterownika graficznego (karty)GetFillPattern (var FillPattern: FillPatternType);podaje bieżący wzorek „wypełniacza”GetFillSettings (var FillInfo: FillSettingsType);podaje bieżący kolor i wzorek „wypełniacza”GetGraphMode: Integer;podaje bieżący tryb graficznyGetImage (x1, y1, x2, y2: Integer; var BitMap);zapamiętuje rysunekGetLineSettings (var LineInfo: LineSettingsType);podaje bieżący styl linii (ciągła, przerywana, grubość itp.)GetMaxColor: Word;podaje najwyższy dostępny numer koloruGetMaxMode: Integer;podaje najwyższy dostępny tryb graficznyGetMaxX: Integer;podaje maksymalną wartość współrzędnej X na ekranieGetMaxY: Integer;podaje maksymalną wartość współrzędnej Y na ekranieGetModeName (ModeNumber: Integer): string;podaje nazwę trybu graficznegoGetModeRange (GraphDriver:Integer; var LoMode, HiMode:Integer);podaje zakres dostępnych trybów graficznychGetPalette (var Palette: PaletteType);podaje bieżącą paletę kolorówGetPaletteSize: Integer;podaje wielkość palety kolorówGetPixel (X,Y: Integer): Word;podaje stan wskazanego punktu na ekranie (jaki ma kolor?)GetTextSettings (var TextInfo: TextSettingsType);podaje bieżące ustawienia do wprowadzania tekstu (współrzędne, kolor, czcionka itp.)GetViewSettings (var ViewPort: ViewPortType);podaje parametry bieżącego okna graficznego (View Port Settings)GetX: Integer;podaje bieżącą współrzędną X kursora graficznego (niewidocznego)GetY: Integer;podaje bieżącą współrzędną Y kursora graficznego (niewidocznego)GraphDefaults;wraca do domyślnych ustawień trybu graficznego, ustawia kursor graficzny w punkcie (0,0)GraphErrorMsg (ErrorCode: Integer): string; podaje komunikat o błędzie grafiki z zadanym numeremImageSize (x1, y1, x2, y2: Integer): Word;wielkość rysunku InstallUserDriver (Name: string; AutoDetectPtr: pointer): integer;instaluje sterownik graficzny użytkownikaInstallUserFont (FontFileName: string ): Integer;instaluje czcionki graficzne użytkownikaLine (x1, y1, x2, y2: Integer);rysuje linię prostąLineRel (Dx, Dy: Integer);rysuje linię prostą relatywnie do bieżącej pozycji kursora graficznegoLineTo (X, Y: Integer);rysuje linię od bieżącego położenia kursora do wskazanego punktuMoveRel (Dx, Dy: Integer);przesuwa kursor graficzny relatywnie (w stosunku do pozycji początkowej)MoveTo (X, Y: Integer);przesuwa kursor graficzny do wskazanego punktuOutText (TextString: string);wyprowadza tekstOutTextXY (X,Y: Integer; TextString: string);wyprowadza tekst począwszy od punktu o zadanych współrzędnych X i YPieSlice (X, Y: Integer; StAngle, EndAngle, Radius: Word);rysuje wycinek wykresu kołowegoPutImage (X, Y: Integer; var BitMap; BitBlt: Word);wstawia na ekran rysunekPutPixel (X, Y: Integer; Pixel: Word);zapala punkt na ekranieRectangle (x1, y1, x2, y2: Integer);rysuje prostokątRegisterBGIDriver (driver: pointer): Integer;rejestruje sterownik graficzny BGIRegisterBGIFont (Font: pointer): Integer;rejestruje czcionki dla środowiska DOSRestoreCrtMode;wraca do trybu tekstowego (zwykle na chwilę)Sector (x, y: Integer; StAngle,EndAngle, XRadius, YRadius: Word);rysuje wypełniony wycinek elipsy/okręguSetActivePage (Page: Word);wybiera aktywną stronę (czyli taką, na której odbywa się rysowanie); wszystkie operacje mogą odbywać się wyłącznie w pamięci; Visual/Visible Page – strona na bieżąco odwzorowywana na ekranieSetAllPalette (var Palette);zmienia wszystkie kolory palety na podaneSetAspectRatio (Xasp, Yasp: Word): Word;ustawia skalę rysunkuSetBkColor (ColorNum: Word);ustawia kolor tłaSetColor (Color: Word);ustawia kolor rysunkuSetFillPattern (Pattern: FillPatternType; Color: Word);ustawia wzór “wypełniacza” wnętrza figur i regionówSetFillStyle (Pattern: Word; Color: Word);ustawia rodzaj „wypełniacza”SetGraphBufSize (BufSize: Word);ustawia wielkość bufora pamięci dla grafikiSetGraphMode (Mode: Integer);włącza tryb graficznySetLineStyle (LineStyle: Word; Pattern: Word; Thickness: Word);ustawia rodzaj linii (ciągła, przerywana, gruba itp.)SetPalette (ColorNum: Word; Color: Shortint);ustawia stosowaną paletę barwSetRGBPalette (ColorNum, RedValue, GreenValue, BlueValue: Integer);ustawia paletę trójskładnikową (R=Red, G=Green, B=Blue)SetTextJustify (Horiz, Vert: Word);ustawia sposób wyrównywania tekstuSetTextStyle (Font, Direction: Word; CharSize: Word);ustawia styl tekstuSetUserCharSize (MultX, DivX, MultY, DivY: Word);ustawia wielkość czcionek użytkownikaSetViewPort (x1, y1, x2, y2: Integer; Clip: Boolean);ustawia okno graficzne na ekranieSetVisualPage (Page: Word);wybiera stronicę pamięci karty widoczną na ekranieSetWriteMode (WriteMode: Integer);ustawia tryb „nadrysowywania” na poprzedni rysunekTextHight (TextString: string): Word;ustawia wysokość tekstuTextWidth (TextString: string): Word;ustawia szerokość tekstuAd. 3 CloseGraph;zamyka tryb graficzny (powrót do trybu tekstowego)
Chomik__Robert